当我在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”中的元素。 ? 这两个循环之间有什么区别?
答案 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]