python 修改列表中的项,保存回列表
我有个感觉,我需要在一个字符串列表里找到一个项目,修改这个项目(作为字符串),然后把它放回列表的同一个位置。
不过,我在把项目放回同一个位置时遇到了困难。
for item in list:
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[item] = item
print item
现在我遇到了一个错误。
TypeError: list indices must be integers, not str
这个错误是因为这一行 list[item] = item
这很有道理!但是我不知道怎么用Python把这个项目放回列表的同一个位置。
这需要什么语法呢?理想情况下,for循环可以跟踪我当前的位置。
4 个回答
7
一个常见的方法来改变列表中的每个元素是这样的:
for i in range(len(L)):
item = L[i]
# ... compute some result based on item ...
L[i] = result
我们可以用enumerate()来重写这个方法,变成:
for i, item in enumerate(L):
# ... compute some result based on item ...
L[i] = result
可以查看 enumerate 的详细信息。
8
你需要使用 enumerate 函数:查看 Python 文档
for place, item in enumerate(list):
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[place] = item
print item
另外,使用 "list" 作为变量名是不好的,因为它是 Python 中的保留字。
既然你在使用 enumerate 时遇到了问题,可以试试来自 itertools 库的一个替代方案:
for place, item in itertools.zip(itertools.count(0), list):
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[place] = item
print item
61
你可以这样做:
for idx, item in enumerate(list):
if 'foo' in item:
item = replace_all(...)
list[idx] = item