Python列表附加错误

Python列表附加错误,python,list,append,Python,List,Append,我试图同时使用多个列表(连续一行)的append 但是,它将所有项目添加到我的所有列表中。请参见下面的脚本和结果: x1=y1=z1=[] for i in range(1,5): x1.append(i) y1.append(i*4) z1.append(i*10) print ("\n x1=", x1,"\n y1=", y1,"\n z1=", z1) 结果: x1= [1, 4, 10, 2, 8, 20, 3, 12, 30, 4, 16, 40] y

我试图同时使用多个列表(连续一行)的append

但是,它将所有项目添加到我的所有列表中。请参见下面的脚本和结果:

x1=y1=z1=[]
for i in range(1,5):
    x1.append(i)
    y1.append(i*4)
    z1.append(i*10)
print ("\n x1=", x1,"\n y1=", y1,"\n z1=", z1)
结果:

 x1= [1, 4, 10, 2, 8, 20, 3, 12, 30, 4, 16, 40] 
 y1= [1, 4, 10, 2, 8, 20, 3, 12, 30, 4, 16, 40] 
 z1= [1, 4, 10, 2, 8, 20, 3, 12, 30, 4, 16, 40]

感谢您的评论。

这是因为您的所有列表变量都指向同一个列表

改为按如下方式初始化列表:

x1 = []
y1 = []
z1 = []

这样做,x1=y1会使这两个变量指向相同的内存空间,因此修改其中一个会使您看起来像是在修改所有变量,而实际上它们都是相同的东西。这是因为您的所有列表变量都指向同一个列表

改为按如下方式初始化列表:

x1 = []
y1 = []
z1 = []

这样做,x1=y1会使这两个变量指向相同的内存空间,因此修改其中一个变量会使您看起来像是在修改所有变量,而实际上它们都是相同的东西,这是因为
x1
x2
x3
绑定到相同的列表。写
x1,x2,x3=[],[],[],[]
而不是
x1=x2=x3=[]
这是因为
x1
x2
x3
绑定到同一个列表。写
x1,x2,x3=[],[],[]
而不是
x1=x2=x3=[]

如果你只对输出感兴趣,你可以使用列表理解来做一个更为简洁的方法:

print [i for i in range(1,5)]
print [i*4 for i in range(1,5)]
print [i*10 for i in range(1,5)]
或者,如果要保留这些值,请执行以下操作:

x1 = [i for i in range(1,5)]
y1 = [i*4 for i in range(1,5)]
z1 = [i*10 for i in range(1,5)]
print ("\n x1=", x1,"\n y1=", y1,"\n z1=", z1)
或者,如果您真的想缩减代码,您可以这样做:

for j in zip(*[[i,i*4,i*10] for i in range(1,5)]): print j

如果您只对输出感兴趣,则可以使用列表理解来实现更具python风格的方法:

print [i for i in range(1,5)]
print [i*4 for i in range(1,5)]
print [i*10 for i in range(1,5)]
或者,如果要保留这些值,请执行以下操作:

x1 = [i for i in range(1,5)]
y1 = [i*4 for i in range(1,5)]
z1 = [i*10 for i in range(1,5)]
print ("\n x1=", x1,"\n y1=", y1,"\n z1=", z1)
或者,如果您真的想缩减代码,您可以这样做:

for j in zip(*[[i,i*4,i*10] for i in range(1,5)]): print j