【发布时间】:2018-08-17 10:34:08
【问题描述】:
我想从这里返回数字 5:
list_1 = [[1, 2, 3], [4, 5, 6]]
我认为这会起作用,但事实并非如此:
print(list_1[1:1])
它返回一个空列表。它是索引 1(第二个列表)和位置 1(列表中的第二个数字)。
这不应该有效吗?
【问题讨论】:
我想从这里返回数字 5:
list_1 = [[1, 2, 3], [4, 5, 6]]
我认为这会起作用,但事实并非如此:
print(list_1[1:1])
它返回一个空列表。它是索引 1(第二个列表)和位置 1(列表中的第二个数字)。
这不应该有效吗?
【问题讨论】:
你需要两个独立的操作:
sub_list = list_1[1]
item = sub_list[1]
# or shortly list_1[1][1]
您所做的是调用具有[from:to:step] 接口的切片接口。所以它的意思是:“给我从索引 1 到 索引 1 的所有项目”(阅读切片以获取更多信息)。
【讨论】:
list_1[1][1]
第一个 [1] 给你 [4, 5, 6]。下一个 [1] 给你 5
【讨论】:
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
edit 来自 cmets 的更正
【讨论】:
list_1[1][1:1] = 5 不正确。你也应该使用== 而不是=。
假设我们有一个列表:
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]
如果第一个数字等于或大于第二个数字,除非您更改切片的 step(如果相等,它会始终为空)
一个二维数组,如果你想要列表中第二个列表的第二个对象:
>>> list_1[1]
[4, 5, 6]
>>> list_1[1][1]
5
【讨论】: