python - python中令人困惑的表达式

标签 python list slice

如果我有列表:

lista=[99, True, "Una Lista", [1,3]]

下面的表达式是什么意思?

mi_var = lista[0:4:2]

最佳答案

语法 lista[0:4:2] 被称为 extended slice语法并返回由索引 0(含)到 4(不含)的元素组成的列表切片,但仅包括偶数索引(step = 2)。

在您的示例中,它将给出 [99, "Una Lista"]。更一般地,您可以通过编写 lista[::2] 来获得由偶数索引处的每个元素组成的切片。这与列表的长度无关,因为开始和结束参数分别默认为 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]

关于python - python中令人困惑的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027103/

相关文章:

python - 加密不可用错误: No crypto library available (using oauth2client in google app engine)

SQL : SELECT w/MAX() and GROUP BY 的 Python 等效项

python - 从 python 中的消息字符串发送电子邮件

python - 用列表切片数组

Python + 二维数组切片 + valueerror : operands could not be broadcast together

python - 无法绑定(bind)到具有嵌套(匿名)类型的 pyxb 类

Python根据特定键从嵌套列表中删除重复项和原始项

list - 如何比较 Lisp 中的两个列表

java - 需要帮助对数组的数组列表进行排序

python - 使用两个 bool 数组索引 2D np.array 时出现意外行为