来自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
当我在list1的开头添加一个额外的项目,并在list2的末尾添加了一个项目时,问题就会停止(因为它们不像这样同步)。
显然我还不熟悉这种语言,使用一个列表中的值从另一个列表中选择值的正确方法是什么?
这是正确的思考方式吗?
for x in range(0, len(list1)):
print(list1[list2[x]-1])
答案 0 :(得分:2)
Python基于0索引。 seq[0]
是seq
中的第一个元素。
R是基于1指数的。
所以,是的,在python中你可以使用
list1 = [1,2,3,4]
list2 = [1,2,3,4]
for x in range(0, len(list2)):
print(list1[list2[x]-1])
len(list2)
,而不是len(list1)
。range(0, len(list2))
与range(len(list2))
相同。什么时候
range
只传递一个参数,它被解释为stop
值,默认情况下采用起始值0。注意在Python中
for x in range(...):
通常可以避免,如果是这样,则更可取。相反,你可以写
for item in list2:
print(list1[item-1])
和item
将分配给list2
中的每个项目。
答案 1 :(得分:1)
如果您的列表有4个项目,则索引必须从0到3运行,因此使用值4会引发错误。这是一个字母的例子,可能会更清楚:
list1 = [0,2,1,3]
list2 = ['a','a','d','m']
for x in list1:
print(list2[x]),
=> a d a m