我是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()
的操作。