令人困惑的表达式在python中

elg*_*nka 2 python list slice

如果我有这个清单:

lista=[99, True, "Una Lista", [1,3]]
Run Code Online (Sandbox Code Playgroud)

以下表达式是什么意思?

mi_var = lista[0:4:2]
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 8

该语法lista[0:4:2]称为扩展切片语法,并返回列表的切片,该切片包含从索引0(包括)到4(不包括)的元素,但仅包括偶数索引(步骤= 2).

在你的例子中它会给出[99, "Una Lista"].更一般地说,通过编写lista [:: 2],您可以获得由偶数索引处的每个元素组成的切片.无论列表的长度如何,这都有效,因为start和end参数分别默认为0和列表的长度.

切片的一个有趣功能是您还可以指定它们来修改原始列表,或删除切片以从原始列表中删除元素.

>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[::2] = ['a', 'b', 'c', 'd', 'e']   # Assign to index 0, 2, 4, 6, 8
>>> x
['a', 1, 'b', 3, 'c', 5, 'd', 7, 'e', 9]
>>> del x[:5]                            # Remove the first 5 elements
>>> x
[5, 'd', 7, 'e', 9]
Run Code Online (Sandbox Code Playgroud)