从子列表切片元素 - Python

时间:2018-03-08 22:53:40

标签: python list slice

我想从此返回数字5:

list_1 = [[1, 2, 3], [4, 5, 6]]

我认为这样可行,但事实并非如此:

print(list_1[1:1])

它返回一个空列表。它是索引1(第二个列表)和位置1(列表中的第二个数字)。

不应该这样吗?

4 个答案:

答案 0 :(得分:3)

您需要两个单独的操作:

sub_list = list_1[1]
item = sub_list[1]
# or shortly list_1[1][1]

您所做的是调用具有[from:to:step]接口的切片界面。所以它意味着:"给我所有项目索引1到索引 1" (阅读有关切片的更多信息)。

答案 1 :(得分:1)

list_1[1][1]

第一个[1]给你[4,5,6]。下一个[1]给你5

答案 2 :(得分:1)

list_1 = [[1,2,3],[4,5,6]]

然后

list_1[0] == [1,2,3]
list_1[1] == [4,5,6]

然后

list_1[1][1:1] == []  #slice starting from position '1', and around to the position before '1', effectively returning an empty list
list_1[1][1] == 5
从评论中

编辑更正

答案 3 :(得分:0)

我们说我们有一个清单:

list_1 = [[1, 2, 3], [4, 5, 6]]

你问的是,为什么

list_1[1:1]

返回[]

因为您要求从索引1到索引1的对象,这是什么。

拿一个简单的清单:

>>> x = [1, 2, 3]
>>> x[1:1]
[]

这也是空的,因为您要求索引1到索引1的所有对象。

所有第二个数字都表示最大覆盖率不包含。所以......

>>> x = [1, 2, 3]
>>> x[1:10000]
[2, 3]
>>> x[1:-1023]
[]
>>> x[1:2]
[2]

如果第一个数字等于或大于第二个数字,除非您更改切片的步骤,否则您最终会得到一个空列表(如果它是'等于,它总是空的)

在二维数组中,如果你想要列表中第二个列表的第二个对象:

>>> list_1[1]
[4, 5, 6]
>>> list_1[1][1]
5