列表索引超出范围错误,但看不清楚原因?

时间:2017-09-06 20:46:19

标签: python index-error

这很简单,但我无法弄清楚为什么我的'列表索引超出范围'错误。我有一个名为'cycle_entries'的列表和一个名为'rawdates'的列表,它们的长度都是132:

print len(cycle_entries)
print len(rawdates)
132
132

这个输出也是长度为132的列表:

times = re.findall(dtdict['tx'], str(entries))
print len(times)
132

但是,当我尝试从索引[0]迭代到[131]时,我收到了错误。

for i in range(len(cycle_entries)):
    localtime = rawdates[i]+re.findall(dtdict['tx'], str(entries))[i]
    print localtime

IndexError: list index out of range

我无法弄明白为什么,因为这有效:

test = rawdates[131]+re.findall(dtdict['tx'], str(entries))[131]
print test

任何人都知道它为什么正常工作但我在循环中得到了错误?

1 个答案:

答案 0 :(得分:0)

假设您的列表包含字符串,您可以使用zip函数同时迭代这两个列表:

>>> times = ['1', '2', '3', '4']
>>> rawdates = ['raw1', 'raw2', 'raw3', 'raw4']
>>> for time, rawdate in zip(times, rawdates):
    localt = time + rawdate
    print localt


1raw1
2raw2
3raw3
4raw4

请注意,两个变量都是在for循环之前计算的。 您也可以使用itertools.izip来创建迭代器而不是列表。

Python's zip function docs