在python 2.7中改变列表

时间:2014-09-25 08:57:32

标签: python for-loop reference

当我在python中改变列表时发现了一些东西:

my_list = ['a','b','c','d','e']

示例1

for letter in my_list:
    if letter == 'c':
        letter = 'x'

示例2

for i in range(len(my_list)):
    if my_list[i] == 'c':
        my_list[i] = 'x'

结果1

my_list = ['a','b','c','d','e']

结果2

my_list = ['a','b','x','d','e']

所以我的问题是'字母'不能直接引用“my_list”中的元素。 ? 这两个循环之间有什么区别?

2 个答案:

答案 0 :(得分:0)

假设示例2中的my_list[i]代替letter

在示例1中,当您执行for letter in my_list时,python会遍历列表并将值存储在变量letter中。因此,它就像说letter = my_list[i]。现在您可以比较letter,但更改letter不会更新my_list中的值,因为letter只是列表元素的副本。

答案 1 :(得分:0)

在示例1中,字母是一个简单变量,依次取每个列表元素的值。更改它根本不会影响列表。我想在示例2中,“letter”应该替换为“list [i]”。在这种情况下,列表会被修改。

我写它的方式是:

my_list = ["x" if letter == "c" else letter for letter in my_list]