这段代码的问题在于,它会在第 9 行到达某个点(if a[c+1] != 0:),它会调用索引 +3不存在,它会给我错误“列表索引超出范围”。
a= '555101'
a= list(map(int,a))
c= 0
seq= []
for i in a:
if a[c] == 1:
if a[c+1] != 0:
seq.append(i)
c += 1
elif a[c+3] == 0: #error
if a[c+2] == 0:
seq.append(1000)
c += 1
elif a[c+2] != 0:
seq.append(10)
c += 1
elif a[c+2] == 0:
if a[c+1] == 0:
seq.append(100)
c += 1
elif a[c+1] != 0:
seq.append(1)
c += 1
elif a[c] == 0:
c += 1
elif a[c] == 5:
seq.append(i)
c += 1
print(seq)
最佳答案
您可以使用 python regex module 分割字符串重新
。
import re
pattern = (r'[1-9]0*')
a= '10010010010100511'
print(list(map(int, re.findall(pattern, a))))
输出
[100, 100, 100, 10, 100, 5, 1, 1]
关于python - 尝试拆分数字但列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74232299/