我试图找出为什么这不会返回第3个元素。
Input:
t = [(3,300),(1,100),(2,200),(4,400),(5,500)]
t.sort()
print(t)
t = t[0:2]
print(t)
Output:
[(1, 100), (2, 200), (3, 300), (4, 400), (5, 500)]
[(1, 100), (2, 200)]
谢谢!抱歉这个简单的问题。我原以为结果是: [(1,100),(2,200),(3,300)]
答案 0 :(得分:1)
符号类似于A[a:b]
,其中A是数组,a是起点(零索引和整数),b是停止点(也是一个整数和零索引)。选择中的最后一个元素IE是在停止点找到的元素,不会被捕获,因此如果停止点与起点相同,则不捕获任何元素。
因此,如果我有A=[0,1,2,3]
并输入A[0:0]
,我会获得[]
。但如果我输入A[0:1]
,我会收到[0]
。请注意,A[:1]
与A[0:1]
相同,与[A[1]]
相同。如果您只想要前3个元素,请尝试A[:3]
。
发生了什么?
在下面,当你调用对象[a:b:c]时,它被解释为object.__getitem__( slice(a, b, c) )
。
请注意,slice类具有以下实例化调用:slice(start, stop, step)
。这允许它跳过元素或反向顺序,如果你给它一个负步骤并切换开始和停止。因此A[slice(None,None,-1)]
与A[::-1]
相同,后者通过向后迭代来选择整个数组,从而以相反的顺序返回整个列表。有关切片表示法的更多信息,请参阅:Explain Python's slice notation
答案 1 :(得分:0)
Python索引从0开始,因此如果您需要前三个,则需要help
处的项目。你应该这样做。
t[0], t[1] and t[2]