不应该打印(a [0:2] [0:1])打印['boo',[1,2]]? 如果print(a [0:2] [0:2])打印['boo',[1,2,3]]?
答案 0 :(得分:0)
这里a[0:2]
告诉索引范围[1,2)中的所有元素,因此这将创建一个子列表
sublist = ['boo', [1, 2, 3]]
和
a[0:2][0:1]
告诉我们,在子列表中再次具有元素索引范围为[0,1)的子列表,即['boo']
。
答案 1 :(得分:0)
如果您不进行索引操作,可能会有助于了解原因:
a = ['boo', [1, 2, 3]]
b = a[0:2] # this creates a new list from `a` with elements 0 and 1
b[0] # 'boo'
b[1] # [1, 2, 3]
f = b[0:1] # before this, b is the same as ['boo', [1, 2, 3]]
# retrieving only the first element [0, 1], returns a new list:
f[0] # 'boo'
f # ['foo'] (a list with just 'foo')
在创建与列表前面的内容相同的列表([0:2]
)时,会得到不同的结果:
c = a[0:2] # this creates a new list from `a` with elements 0 and 1
c[0] # 'boo'
c[1] # [1, 2, 3]
c[0:2] # the same as a[0:2][0:2], which is the same as just `c` as well.
a
和c
在这种情况下包含相同的数据。
答案 2 :(得分:0)
Python中的列表切片工作方式如下:
当您在列表a[0:2][0:1]
上执行a=[“boo”,[1,2,3]]
时,首先执行a[0:2]
,这将为您提供结果列表,其元素的位置从0到1。
=> [“boo”,[1,2,3]]
。
接下来,[0:1]
对该结果执行,它返回list,元素仅在0位置,即[“boo”]
。
在列表a[0:2][0:2]
上执行a=[“boo”,[1,2,3]]
时,首先获得位置0和1上的元素=> [“boo”,[1,2,3]]
,然后再次询问位置0和1上的元素({ {1}}),也就是[0:2]
。