繁体   English   中英

Python列表追加错误

[英]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]

谢谢你的评论。

这是因为x1x2x3绑定到同一列表。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM