这很简单,但我无法弄清楚为什么我的'列表索引超出范围'错误。我有一个名为'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
任何人都知道它为什么正常工作但我在循环中得到了错误?
答案 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
来创建迭代器而不是列表。