我目前有一些这样的代码:

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]

10-01 14:17