【问题标题】:.isdigit index out of range python.isdigit 索引超出范围 python
【发布时间】:2014-09-17 09:59:40
【问题描述】:

这是我用来区分函数的代码的更简单版本,但它演示了问题。我收到“列表索引超出范围”错误。它仅在我包含 .isdigit 部分时发生。任何帮助深表感谢!

l='1bcd'
b=list(l)
for i in range (0,len(b)): 

    if b[i].isdigit:
        if i==0:
            if b[i+1]=='b':

                del b[i]
print b

【问题讨论】:

  • 你的根本不是pythonic。您应该直接使用您的列表来制作循环而不是其索引列表。

标签: python python-2.7 indexing


【解决方案1】:

您正在更改b 的长度;你删除第一个字符。但是,您的 range() 仍将继续,您最终会将 i = 3 应用于仅具有索引 0、1 和 2 的 b。

您可以改用while 循环:

i = 0
while i < len(b) - 1:
    if b[i].isdigit() and b[i + 1] == 'b':
        del b[i]
    else:
        b += 1

我删除了 i == 0 测试,因为它不再适用。

请注意,您的isdigit 测试始终为真,因为您没有调用它。

【讨论】:

  • 但我只在 i==0 时尝试这样做,所以 i+1 将是 1,它仍在列表的长度范围内?
猜你喜欢
  • 2017-10-02
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2016-04-17
  • 2016-07-21
相关资源
最近更新 更多