我目前有一些这样的代码:
letters = {
10 : "A",
11 : "B",
12 : "C",
13 : "D",
14 : "E",
15 : "F"
}
vallist = [rd1, rd2, gd1, gd2, bd1, bd2]
for i in vallist:
if i >= 10:
i = letters[i]
我想发生的是for循环,通过
vallist
进行迭代,并将大于10的任何值替换为其对应的字母。但是,我当前的代码只是更改i
而不是列表中的原始值。例如,如果rd1
设置为15,则代码会一直运行,并且i
设置为"F"
,但是rd1
不会更改为"F"
,而是保持为15。如何解决此问题? 最佳答案
对于for
循环的每次迭代,变量i
仅分配了vallist
中项目值的副本,因此对i
所做的更改不会反射(reflect)在i
中。
您应该通过索引更新i
的项目,可以使用enumerate
函数生成该项目:
for index, value in enumerate(vallist):
if value >= 10:
vallist[index] = letters[value]