【问题标题】:List Iteration in PythonPython中的列表迭代
【发布时间】:2013-04-22 00:45:30
【问题描述】:

所以我得到这个错误:

TypeError: list indices must be integers, not str

指向这行代码:

if snarePattern[i] == '*':

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

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

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

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

谢谢大家

【问题讨论】:

  • 至于你的第二个问题(你能想出一种更简单的方法来创建和解析这样的简单模式吗?),你需要更具体。我建议尝试一些事情并搜索堆栈溢出。如果您没有找到任何东西并且仍然遇到问题,请查看常见问题解答,了解什么是主题问题。如果您的问题适合,请打开一个新问题并提出问题(提供有关您正在寻找的内容和尝试过的内容的详细信息)。我们也许可以帮助你:)

标签: python list for-loop


【解决方案1】:

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

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

【讨论】:

  • 不要使用range(len()),enumerate() 干净多了。
  • @g.d.d.c 是的,但在这种情况下,我只是展示了如何单独浏览索引,这给简单的答案增加了额外的混乱程度,但请注意
  • @DanMoore 没问题,如果有帮助,请考虑 accepting my answer
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 2015-05-20
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
相关资源
最近更新 更多