我应该在列表中找到最大的数字,然后将列表中的所有元素更改为该数字。但是当我在迭代后打印输出时,它仍然没有改变。请问我在做什么错?
Ar =[5,4,11]
ArMax = max(Ar)
for i in Ar:
i = ArMax
print(Ar)
答案 0 :(得分:2)
列表没有更改,因为您没有做任何更改列表的操作。您的列表为Ar
-您在哪里为该列表中的任何内容分配了新值?无处。您所做的只是创建一个局部变量以采用Ar
中的值,然后更改该变量的值。您从未碰过原始列表。相反,您必须更改列表元素本身,而不是其副本。紧贴您当前的代码:
for i in range(len(Ar)):
Ar[i] = ArMax
另一种方法是创建一个包含这些项目的新列表,然后只需一次替换所有原始列表即可。
Ar = [ArMax] * len(Ar)
这看起来是要查看len(Ar)
当前列表的长度。然后,它采用一个包含最大值的单元素列表并将其复制多次。新列表成为Ar
的新值。
答案 1 :(得分:0)
i = ArMax
实际上没有为列表分配值,因为i
的值是列表中元素的副本。如果要解决此问题,请尝试:
for i in xrange(len(Ar)):
Ar[i] = ArMax