我需要一个关于Python的切片表示法的很好的解释(参考文献是加号).

对我来说,这个符号需要一点回味.

它看起来非常强大,但我还没有完全理解它.

推荐答案

其实很简单:

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

也可以与上述任何值一起使用:

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

要记住的关键一点是,:stop表示选定切片中的第一个值,即not.因此,stopstart之间的差异是所选元素的数量(如果step为1,则为默认值).

另一个特点是,startstop可以是一个negative数字,这意味着它从数组的末尾而不是开头开始计数.因此:

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只包含一个元素,则会得到一个空列表,而不是错误.有时您更喜欢错误,因此您必须意识到这种情况可能会发生.

Relation to slice() object

切片运算符[]实际上在上面的代码中与使用:表示法的slice()对象一起使用(其仅在[]内有效),即:

a[start:stop:step]

相当于:

a[slice(start, stop, step)]

根据参数的数量,切片对象的行为也略有不同,类似于range(),即slice(stop)slice(start, stop[, step])都受支持.

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

Python相关问答推荐

Odoo onchange for invoice_Status of sale事件.订单未触发

将列表中的元素替换为收件箱中的元素

如何将新的SQL服务器功能映射到SQL Alchemy的ORM

使用regex分析具有特定字符的字符串(如果它们存在)

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

根据给定日期的状态过滤查询集

Class_weight参数不影响RandomForestClassifier不平衡数据集中的结果

Pandas 填充条件是另一列

对Numpy函数进行载体化

Python json.转储包含一些UTF-8字符的二元组,要么失败,要么转换它们.我希望编码字符按原样保留

如何将双框框列中的成对变成两个新列

运行总计基于多列pandas的分组和总和

我对我应该做什么以及我如何做感到困惑'

使用groupby方法移除公共子字符串

Tkinter菜单自发添加额外项目

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

ConversationalRetrivalChain引发键错误

搜索按钮不工作,Python tkinter

Numpyro AR(1)均值切换模型抽样不一致性

Python—为什么我的代码返回一个TypeError