在Python中列出迭代

时间:2013-04-22 00:45:31

标签: python list for-loop

所以我收到了这个错误:

TypeError: list indices must be integers, not str

指向这行代码:

if snarePattern[i] == '*':

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

snarePattern = ['-', '*', '-', '*']
for i in snarePattern:
    if snarePattern[i] == '*':
        ...

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

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

谢谢你们

1 个答案:

答案 0 :(得分:13)

for i in snarePattern:会检查每个而不是每个索引:

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


-
*
-
*

您可以将其更改为

for i in range(len(snarePattern)):

如果你真的需要它,但看起来你不需要,只需检查c == '*'是否为例。

更好通过索引的方式是

for i, c in enumerate(snarePattern):  # i is each index, c is each character