2013-04-22 93 views
2

,所以我得到这个错误:列表进行迭代在Python

TypeError: list indices must be integers, not str 

指着这行代码:

if snarePattern[i] == '*': 

每当我用我的想法是简单的Python

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

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

此外,如果有人知道我要去哪里用这段代码,你能想到一个更简单的方法来创建和解析这样的简单模式吗?我是Python的新手。

谢谢你们

+0

至于你的第二个问题(你能想到的更简单的方法来创建和解析简单的模式也是这样吗?),你会需要更具体。我会建议尝试一些事情,并搜索堆栈溢出。如果您找不到任何内容并且仍然遇到问题,请查看常见问题的常见问题解答。如果你的问题很合适,请打开一个新问题并提问(提供你正在寻找的东西以及你试过的东西的细节)。我们可能能够帮助你:) – mgilson 2013-04-22 01:09:34

回答

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 
+0

gotcha谢谢!!! – DanMoore 2013-04-22 00:49:24

+4

不要使用'range(len())','enumerate()'更清洁。 – 2013-04-22 00:50:21

+0

@gddc true但在这种情况下,我只是展示如何单独通过索引,为简单的答案增加了额外的混乱级别,但是,请注意 – jamylak 2013-04-22 00:52:12