Python 列表切片练习没有意义



我知道[start:end]表示法意味着第一个数字是列表中切片开始的位置,最后一个数字是切片结束的列表中的位置-1,但在本例中是

U= [2, 'haha', [5,6,9], 3, 2, 1] ; 
U[1:2]=[] ; 
U[2:]=[] ;

得到的切片是:

U= [2, [5,6,9]]

为什么这是答案?我在第二步中得到了3,2,1被淘汰。但是,为什么得到的切片是[2,[5,6,9]]而不是[5,6,9]

Python列表切片可以替换为可迭代。

你从这个开始:

U = [2, 'haha', [5,6,9], 3, 2, 1] ; 

U[1:2]'haha'(从元素1直到但不包括2(,因此用空的可迭代[]替换它实质上从列表中移除'haha'

此时,您就有了[2, [5,6,9], 3, 2, 1]

U[2:]是从元素索引2到末尾,即[3, 2, 1]。同样,如前所述,将其设置为空的可迭代[],删除这三个元素,留下[2, [5,6,9]]

使用python控制台可以使示例更容易理解:

>>> U = [2, 'haha', [5, 6, 9], 3, 2, 1]
>>> U
[2, 'haha', [5, 6, 9], 3, 2, 1]

去掉第二个元素。

>>> U[1:2]=[]
>>> U
[2, [5, 6, 9], 3, 2, 1]

去掉第二个元素之后的所有元素。

>>> U[2:] = [];
>>> U
[2, [5, 6, 9]]