关于列表切片操作问题?
不应是我标记的这种结果吗?为什么是小甲鱼这种解释? 本帖最后由 yinda_peng 于 2023-9-6 16:23 编辑关键在于最后一个步长参数,你想,为什么[-2::]会是,因为是从[-2]开始走,步长为默认的1,[-2]就是1,然后[-2]走到[-1]就是“虎”,那么我们说步长是-2,开始是[-2]就是1,然后走-2个单位长度,索引变成了[-4]就是元素2,到最后索引为[-10]就是第一个元素,再走就出界了,于是停止 yinda_peng 发表于 2023-9-6 16:22
关键在于最后一个步长参数,你想,为什么[-2::]会是,因为是从[-2]开始走,步长为默认的1,[-2] ...
我的理解是这样的[-2::],这里[-2::]这一段我的理解是从列表-2位置,从左往右算到末尾,相当于切取原列表形成一个新列表步进是1,从左往右那么新形成的列表是,那么[-2::-2]后边这个-2也只是在中,以反方向-2的步长取切取形成一个新列表["虎"]吗? lbf4325 发表于 2023-9-6 17:46
我的理解是这样的[-2::],这里[-2::]这一段我的理解是从列表-2位置,从左往右算到末尾,相当于切取原列表 ...
我感觉是不是理解切取条件的优先级什么的有关系,我的理解的结果如下
lbf4325 发表于 2023-9-6 17:51
我感觉是不是理解切取条件的优先级什么的有关系,我的理解的结果如下
你不能分开理解,分开就不对了,要和步长一起理解,对于终点其实如果没有指明你就依据步长去算,直到出界停止 yinda_peng 发表于 2023-9-6 18:02
你不能分开理解,分开就不对了,要和步长一起理解,对于终点其实如果没有指明你就依据步长去算,直到出界 ...
[-2::-2]和[-2::2] 就是说这个终点往哪个方向取决于切片的步长的方向,步长为正就从左往右,步长为负就从右往左! 其实我感觉我还没有从原理上理解,只是记住这个方法,难道规定就是这样的?就比如说索引为什么0开始,看了文章我就知道他为啥要这么干! lbf4325 发表于 2023-9-11 09:51
[-2::-2]和[-2::2] 就是说这个终点往哪个方向取决于切片的步长的方向,步长为正就从左往右,步长为负就从 ...
我的理解可能更趋向于就是一种规定,至于说为什么这样做,我没有那么深的理解和研究,我给你提供一下AI的一些说法吧
以下为AI回复:
问:
有没有阐述为什么这么定义步长这种参量的文章?
答:
Python中切片操作的步长参数(stride,或者也叫step)的定义和行为是经过一定的设计和讨论的,旨在提供一种直观、灵活且功能强大的方式来操作序列类型(如列表、字符串等)的元素。虽然没有单一的文章或规范详细阐述这个设计决策,但可以通过以下几个原因来理解为什么要这样定义步长参数:
一致性: Python的设计哲学之一是保持一致性。通过使步长参数的行为与索引选择方式保持一致,可以使语言更容易学习和使用。这样,开发者可以将对切片的理解扩展到步长上,而不必学习额外的规则。
灵活性: 定义步长参数为整数允许使用者指定任何跳跃模式,包括向前、向后或跳跃式的访问元素。这种灵活性对于处理不规则的数据或特定的应用场景非常有用。
正负步长: 正步长和负步长分别表示向前和向后的方向。这样可以轻松地反转序列或反向迭代它,而不需要额外的操作。
通用性: 步长参数的通用性使得可以用相同的语法来处理各种序列类型,包括列表、字符串、元组等。这增加了Python的通用性和一致性。
简洁性: 步长参数的设计使得可以用一种简洁的方式来表达复杂的选择模式,而无需编写额外的循环或逻辑。
虽然这些是步长参数设计的一些主要原因,但请注意,Python的设计决策是由Python社区的核心开发者共同制定的,而不是通过单一的文章或规范来定义的。这些决策旨在提供一种自然而然的方式来处理序列,以满足不同开发者的需求。如果您对Python的设计决策感兴趣,可以查看Python的PEP(Python Enhancement Proposals)文档,其中包含了关于语言特性和设计决策的详细信息。
页:
[1]