[英]Python list append error
我尝试同时(连续一行)将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
, x2
和x3
绑定到同一列表。 写x1, x2, x3 = [], [], []
代替x1 = x2 = x3 = []
。
这是因为所有列表变量都指向同一列表。
初始化列表如下:
x1 = []
y1 = []
z1 = []
这样做,x1 = y1会使这两个变量都指向相同的内存空间,因此修改一个变量就好像您正在修改所有变量,而实际上它们都是一样的东西
如果您只对输出感兴趣,则可以使用列表推导来执行更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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.