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