程序1:
((total ^ 3) - total) / 6
程序2
lines = [['5.1', '3.5', '1.4', '0.2', 0],
['5.2', '2.5', '1.3', '0.1', 1]]
for line in lines:
line = [float(i) for i in line]
print(line)
print(lines)
不明白为什么每一行都被修改了,但是每一行都没有修改,有人可以解释为什么吗?
答案 0 :(得分:2)
在程序1中,您正在将新值重新分配给line
元素。因此,它没有引用相同的lines
元素,而是在使用赋值运算符(=)完成赋值后有了一个新地址。
输出:
[5.1, 3.5, 1.4, 0.2, 0.0]
[5.2, 2.5, 1.3, 0.1, 1.0]
[['5.1', '3.5', '1.4', '0.2', 0], ['5.2', '2.5', '1.3', '0.1', 1]]
观察,您已将lines
元素作为字符串传递了,并且您将按原样获得lines
。但是line
元素为float(lines
中没有反映)。
在程序2中,您正在访问line
的元素lines
。它是lines
元素的保存地址。
输出:
[5.1, 3.5, 1.4, 0.2, 0.0]
[5.2, 2.5, 1.3, 0.1, 1.0]
[[5.1, 3.5, 1.4, 0.2, 0.0], [5.2, 2.5, 1.3, 0.1, 1.0]]
观察,您已将lines
元素作为字符串传递了,现在您将lines
元素作为float传递了。