gpt4 book ai didi

python - Python 中的切片是如何工作的

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:24 94 4
gpt4 key购买 nike

Python 的切片表示法如何工作?也就是说:当我编写诸如 a[x:y:z]a[:]a[::2] 等代码时., 我如何理解哪些元素最终出现在切片中?请在适当的地方添加引用文献。

<小时/>

参见Why are slice and range upper-bound exclusive?有关符号背后的设计决策的更多讨论。

参见Pythonic way to return list of every nth item in a larger list对于切片最常见的实际用法(以及解决问题的其他方法):获取列表中的每个第 N 个元素。请在适当的情况下使用该问题作为重复目标。

有关切片分配的更多具体答案,请参阅 How does assignment work with list slices? (尽管这里也解决了这个问题)。

最佳答案

语法是:

a[start:stop]  # items start through stop-1
a[start:] # items start through the rest of the array
a[:stop] # items from the beginning through stop-1
a[:] # a copy of the whole array

还有 step 值,它可以与上述任何一个一起使用:

a[start:stop:step] # start through not past stop, by step

要记住的关键点是 :stop 值表示所选切片中的第一个值。因此,stopstart 之间的区别在于所选元素的数量(如果 step 为 1,则为默认值)。

另一个特点是 startstop 可能是负数,这意味着它从数组末尾开始计数,而不是从数组末尾开始计数。开始。所以:

a[-1]    # last item in the array
a[-2:] # last two items in the array
a[:-2] # everything except the last two items

同样,step可能是负数:

a[::-1]    # all items in the array, reversed
a[1::-1] # the first two items, reversed
a[:-3:-1] # the last two items, reversed
a[-3::-1] # everything except the last two items, reversed

如果项目比你要求的少,Python 对程序员很友善。例如,如果您要求 a[:-2] 并且 a 仅包含一个元素,您将得到一个空列表而不是错误。有时您更愿意看到错误,因此您必须意识到这种情况可能会发生。

slice对象的关系

一个slice object可以表示一个切片操作,即:

a[start:stop:step]

相当于:

a[slice(start, stop, step)]

根据参数数量的不同,Slice 对象的行为也略有不同,类似于 range(),即 slice(stop)slice(start,支持 stop[, step])。要跳过指定给定参数,可以使用 None,这样例如a[start:] 相当于 a[slice(start, None)]a[::-1] 相当于 a[切片(无,无,-1)]

虽然基于 : 的表示法对于简单切片非常有帮助,但显式使用 slice() 对象可以简化切片的编程生成。

关于python - Python 中的切片是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755614/

94 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com