&引用;“切片列表”;及;省略号“;在Python中;切片列表和带切片列表的列表

&引用;“切片列表”;及;省略号“;在Python中;切片列表和带切片列表的列表,python,list,slice,itertools,Python,List,Slice,Itertools,原始问题:有人能告诉我如何使用“切片列表”和“省略号”吗?它们什么时候有用?谢谢 下面是语言定义中关于“切片列表”和“省略号”的内容;亚历克斯·马泰利的回答指出了它们的起源,这不是我所想象的 [ 5.3.3.滑环 扩展_切片::=主“[” 切片列表“]” 切片列表::=切片项目(“,” 切片项目)*[“,”] 切片_项::=表达式| 适当的|切片|省略号 省略号::=“…” [1] : 如果有人(像我一样)正在寻找攻击列表(或列表)的方法对于切片列表,这里有5种方法可以从切片列表选择的列表

原始问题:有人能告诉我如何使用“切片列表”和“省略号”吗?它们什么时候有用?谢谢

下面是语言定义中关于“切片列表”和“省略号”的内容;亚历克斯·马泰利的回答指出了它们的起源,这不是我所想象的

[

5.3.3.滑环

扩展_切片::=主“[” 切片列表“]”

切片列表::=切片项目(“,” 切片项目)*[“,”]

切片_项::=表达式| 适当的|切片|省略号

省略号::=“…”

[1] :

如果有人(像我一样)正在寻找攻击列表(或列表)的方法对于切片列表,这里有5种方法可以从切片列表选择的列表中获取元素列表,还有2种方法可以对列表列表执行相同的操作,在这种情况下,每个列表应用一个切片。输出在末尾的注释中。我发现使用嵌套for循环的示例h5是最难理解的有意义变量未使用名称(已更新)


Numpy使用它们来实现数组切片。

切片列表和省略号最初是在Python中引入的,目的是为Numpy的前置器(好的旧数值)提供良好的语法支持。如果您使用Numpy(没有理由回到它的任何前置器!)当然,您应该使用它们;如果出于任何奇怪的原因,您正在自己实现超灵活的多维数组,那么您肯定会想研究numpy使用它们的方式,并可能会仔细模仿它(毕竟它设计得非常好).除了多维数组之外,我想不出有什么好的用途。

我对省略号不太确定,所以我将不讨论这个问题,以免给你一个不好的答案

下面是列表切片:

我希望您知道列表索引从0开始

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
索引到列表中:

l[0]
>>> 0

l[5]
>>> 5
切片列表。包括第一个索引,但不包括最后一个索引:

l[0:5]
>>> [0, 1, 2, 3, 4]

l[2:5]
>>> [2, 3, 4]
将整个列表作为一个片段返回:

l[:]
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
获取包含每个元素的列表切片,包括第3个索引及其后的元素:

l[3:]
>>> [3, 4, 5, 6, 7, 8, 9]
获取列表的一部分,该部分包含每个元素,但不包括第5个索引:

l[:5]
>>> [0, 1, 2, 3, 4]
以下是您不希望python执行的操作:

l[5:18]  # note: there is no 18th index in this list
>>> [5, 6, 7, 8, 9]

省略号——很少使用。切片——常见。啊。所以我不认为“切片列表”是在一个紧凑表达式中挤出任意、多个列表运行的一种方式。遗憾的是,我几乎用过它。对于“列表运行”,改为“从单个、一维列表运行”@behindthefalls,不,运行通常是用itertools.groupby提取的,没有特殊的语法。你当然可以在你自己的对象中实现这种语法,但不确定大多数人都能读懂。Alex,谢谢itertools.groupby提示:我从未注意到这个操作,但我会去看看。我感谢你的帮助.我正在努力理解我4年前写的代码,我(希望如此)简化了大量的列表/集合循环。我突然想到,如果合法的话,我可以将一些东西预先打包为切片或切片列表。回到绘图板上。itertools.groupby做了一些不同的事情,但有几种方法可以让切片列表按预期工作。可怜的列表永远不知道会发生什么。现在,如果我可以得到一个切片列表请注意,l[:]选项是复制数组的缩写,您会经常看到它。当我遇到这种语言允许您使用逗号分隔两个或多个切片表达式时,我感到困惑!;-)
l[5:18]  # note: there is no 18th index in this list
>>> [5, 6, 7, 8, 9]