0

这很简单,但我不知道为什么会出现“列表索引超出范围”错误。我有一个名为“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

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

4

1 回答 1

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.izipwhich 创建迭代器而不是列表。

Python 的 zip 函数文档

于 2017-09-06T20:58:51.323 回答