2017-09-06 88 views
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 

任何人都知道爲什麼它工作正常,但我得到了循環內的錯誤?

+0

是'時,會發生什麼樣的價值i'錯誤?如果你在循環之外移動'findall'操作,錯誤是否會持續? – Sayse

+0

我不確定,但我嘗試了0和131兩個都在循環外工作。 –

+2

首先,你爲什麼要在循環中計算're.findall(dtdict ['tx'],str(entries))'?它沒有改變。在循環開始前計算一次(如'times')並使用循環中的列表。 – DyZ

回答

0

假設你的列表中包含字符串,你可以使用zip功能兩份名單simultenously遍歷:

>>> 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

相關問題