当想对列表迭代,针对其中的每项做修改时,可能会碰到如下的错误用法。
item = ['aa', 'bb', 'cc']
for i in item:
i = i+'123'
print(item)
注意上述代码的缩进。
这样仅仅是对迭代子进行了操作,对”列表各项“的操作是没有任何效果的。出了这个for循环,你的操作将不会得到保存。
运行结果如下:
['aa', 'bb', 'cc']
一种解决方法如下:
item = ['aa', 'bb', 'cc']
for i, j in enumerate(item):
item[i] = j+'123'
print(item)
运行结果如下:
['aa123', 'bb123', 'cc123']
这样是对item本身进行了操作,结果得以保存。
犯这样错误的原因可能是将python语法与C++等混淆了,认为在某个函数内,该变量是一直独立存在的。但实际上这个for循环相当于一个内建的小函数,迭代子仅仅在这个循环内有效。
网友评论