无法理解为什么两个程序没有返回相同的结果

时间:2018-09-03 04:53:47

标签: python list

程序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)

不明白为什么每一行都被修改了,但是每一行都没有修改,有人可以解释为什么吗?

1 个答案:

答案 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传递了。