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

时间:2011-05-25 20:04:41

标签: python list for-loop

我有一种预感,我需要访问列表中的项目(字符串),修改该项目(作为字符串),并将其放回同一索引的列表中

我很难将一件商品带回同一个索引

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 个答案:

答案 0 :(得分:44)

你可以这样做:

for idx, item in enumerate(list):
   if 'foo' in item:
       item = replace_all(...)
       list[idx] = item

答案 1 :(得分:7)

您需要使用枚举函数:python docs

for place, item in enumerate(list):
    if "foo" in item:
        item = replace_all(item, replaceDictionary)
        list[place] = item
        print item

另外,将单词列表用作变量是一个坏主意,因为它是python中的保留字。

由于您遇到了枚举问题,因此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

答案 2 :(得分:3)

更改列表中每个元素的常用习惯用法如下所示:

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

答案 3 :(得分:1)

对于Python 3:

ListOfStrings = []
ListOfStrings.append('foo')
ListOfStrings.append('oof')
for idx, item in enumerate(ListOfStrings):
if 'foo' in item:
    ListOfStrings[idx] = "bar"