來自R,這很難理解。從列表中獲取元素從位置0
開始。 問題是,使用一個列表從另一個列表中選擇項目在這裏沒有以相同的速度運行。指數在另一個使用一個列表索引不同步
list1 = [1,2,3,4]
list2 = [1,2,3,4]
for x in range(0, len(list1)):
print(list1[list2[x]])
這將導致:
>> 2
>> 3
>> 4
>> IndexError: list index out of range
當我把一個附加項目,在列表1開始,並增加了一個項目,在列表2月底,這個問題停止(僅僅是因爲他們不像這樣同步)。
很明顯,我對語言還不熟悉,使用一個列表中的值從另一個列表中選擇值的正確方法是什麼?
這是正確的想法嗎?
for x in range(0, len(list1)):
print(list1[list2[x]-1])
非常豐富的信息,正是我一直在尋找的!謝謝。 – PascalVKooten 2013-03-16 22:21:05
雖然沒有逃脫醜陋的'-1',對於使用python的人來說這很正常嗎? – PascalVKooten 2013-03-16 22:21:55
我們建立了'list2',其中的值少一個,因此不需要減去一個。這是一個自我一致的系統,就像'R's'索引是自我一致的。只有在從一個系統轉換到另一個系統時纔會出現問題。 Edsger Dijkstra撰寫了[爲什麼基於0的索引更可取]的論點(http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF)。 – unutbu 2013-03-16 22:25:50