CQM*_*CQM 27 python for-loop list
我有一种预感,我需要访问列表中的项目(字符串),修改该项目(作为字符串),并将其放回同一索引的列表中
我很难将一个项目放回到相同的索引中
for item in list:
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[item] = item
print item
Run Code Online (Sandbox Code Playgroud)
现在我收到一个错误
TypeError: list indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)
由于这条线 list[item] = item
这很有意义!但我不知道如何使用python将项目放回到同一索引的列表中
这是什么语法?理想情况下,for循环可以跟踪我当前所处的索引
Cat*_*lus 45
你可以这样做:
for idx, item in enumerate(list):
if 'foo' in item:
item = replace_all(...)
list[idx] = item
Run Code Online (Sandbox Code Playgroud)
您需要使用枚举函数:python docs
for place, item in enumerate(list):
if "foo" in item:
item = replace_all(item, replaceDictionary)
list[place] = item
print item
Run Code Online (Sandbox Code Playgroud)
另外,使用单词列表作为变量是一个坏主意,因为它是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
Run Code Online (Sandbox Code Playgroud)
小智 5
更改列表中每个元素的常用习惯用法如下所示:
for i in range(len(L)):
item = L[i]
# ... compute some result based on item ...
L[i] = result
Run Code Online (Sandbox Code Playgroud)
这可以使用 enumerate() 重写为:
for i, item in enumerate(L):
# ... compute some result based on item ...
L[i] = result
Run Code Online (Sandbox Code Playgroud)
请参阅枚举。