Python 3.8:为什么即使语句为false,new_list仍在更新



我是python的初学者,我想知道为什么在下面的代码中,new_list在for循环的每次迭代后都会更新,尽管new_list只应该在if条件为true时更新(这就是我想要的(。

my_sum = 0
first_list = [1, -2, 3, -4]
second_list = []
new_list = []
for num in first_list:
second_list.append(num)
if my_sum <= sum(second_list):
my_sum = sum(second_list)
new_list = second_list
print(new_list)

输出:

[1]
[1, -2]
[1, -2, 3]
[1, -2, 3, -4]

然而,当我在if语句中移动print语句时,在每次for循环迭代结束后,我会得到预期的结果:

my_sum = 0
first_list = [1, -2, 3, -4]
second_list = []
new_list = []
for num in first_list:
second_list.append(num)
if my_sum <= sum(second_list):
my_sum = sum(second_list)
new_list = second_list
print(new_list) # Moved print statement inside if statement

输出:

[1]
[1, -2, 3]

有人能解释一下为什么new_list在每次for循环迭代后都会更新,尽管我只希望它在if条件为true时更新吗?

提前谢谢!

您已经在表达式new_list = second_list中将new_list别名为second_list。基本上,在这一行之后,它们都是同一个实体。相反,您希望执行类似new_list = second_list.copy()的操作。

最新更新