不了解双列表查找



我无法计算出这段代码的输出:

lst = [3,1,4,-2]
print(lst[lst[-1]])
# output 4

lst = [3,1,4,-2]
print(lst[lst[3]])
# output 4
lst[0] = 3
lst[lst[0]] = lst[3] = -2
lst[-4] = 3
lst[lst[-4]] = lst[3] = -2
list=[3,1,4,-2]
print(list[list[0]])
-2
Explanation:
list[0] = 3
substitute this value in list[list[0]] which makes it list[3]
finally print(list[3]) whose output will be -2

list=[3,1,4,-2]
print(list[list[-4]])
-2
Explanation:
list[-4] is 3
substitute this value in list[list[-4]] which makes it list[3]
finally print(list[3]) whose output will be -2

这样想:lst[-4]lst[0]只返回数字(分别为-2和3(。

因此,

lst = [3,1,4,-2]
print(lst[lst[0]])

与没有什么不同

lst = [3,1,4,-2]
print(lst[3])

考虑第二个例子

lst = [3,1,4,-2] 
print(lst[lst[-4]])

lst[-4]返回3-1的索引值给出最后一个元素,-2给出数组的倒数第二个元素,同样,-4返回倒数第四个元素。

由于lst[-4]返回3,我们有print(lst[3]),它返回数组的第三个索引元素,即-2,考虑到0是第一个元素。

在第一个示例中,它与上面类似,其中最终输出应该是-2

我们可以使用index运算符[]来访问列表中的项目。索引从0开始。因此,具有5个元素的列表将具有从0到4的索引。尝试访问除此之外的元素将引发IndexError

Python还允许对其序列进行负索引。-1的index表示最后一项,-2表示倒数第二项,依此类推

从您的示例

lst = [3, 1, 4, -2]
0  1  2   3  # +ve index
-4 -3 -2  -1  # -ve index
>>> print(lst[lst[0]])  # lst[0] is 3 ==> lst[3] is -2
-2
>>> print(lst[lst[-4]])  # lst[-4] is 3 ==> lst[3] is -2
-2

最新更新