在Python中列出迭代

Dan*_*ore 2 python for-loop list

所以我得到这个错误:

TypeError: list indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)

指向这行代码:

if snarePattern[i] == '*':
Run Code Online (Sandbox Code Playgroud)

每当我使用我认为简单的Python时

snarePattern = ['-', '*', '-', '*']
for i in snarePattern:
    if snarePattern[i] == '*':
        ...
Run Code Online (Sandbox Code Playgroud)

这是不允许的?我不知道什么?

而且,如果有人知道我将使用此代码,你能想到一种更简单的方法来创建和解析这样的简单模式吗?我是Python的新手.

多谢你们

jam*_*lak 13

for i in snarePattern:遍历每个项目而不是每个索引:

>>> snarePattern = ['-', '*', '-', '*']
>>> for c in snarePattern:
        print c


-
*
-
*
Run Code Online (Sandbox Code Playgroud)

你可以把它改成

for i in range(len(snarePattern)):
Run Code Online (Sandbox Code Playgroud)

如果你真的需要它,但看起来你没有,只需检查一下c == '*'.

一个更好的办法去通过指数是

for i, c in enumerate(snarePattern):  # i is each index, c is each character
Run Code Online (Sandbox Code Playgroud)

  • 不要使用`range(len())`,`enumerate()`是如此清晰. (4认同)
  • @DanMoore没问题,考虑一下[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) (2认同)