python 修改列表中的项,保存回列表

40 投票
4 回答
130372 浏览
提问于 2025-04-16 18:20

我有个感觉,我需要在一个字符串列表里找到一个项目,修改这个项目(作为字符串),然后把它放回列表的同一个位置。

不过,我在把项目放回同一个位置时遇到了困难。

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

撰写回答