迭代和更改Python列表中的元素

时间:2018-10-02 16:10:06

标签: python list

我应该在列表中找到最大的数字,然后将列表中的所有元素更改为该数字。但是当我在迭代后打印输出时,它仍然没有改变。请问我在做什么错?

Ar =[5,4,11]
ArMax = max(Ar)

for i in Ar:
   i = ArMax

print(Ar)

2 个答案:

答案 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