2024-04-19 11:59:39 发布
网友
众所周知,我们可以使用切片轻松地从阵列中提取数据:
>>> L = range(10) >>> L[::2] [0, 2, 4, 6, 8]
我经常在需要使用切片时编写代码,如下所示:
>>> L[ind:ind+x]
我现在好奇的是:为什么没有一个单一的运营商来实现这一点?例如,在Verilog中,我们可以使用如下切片:
>>> L[ind+:x]
是否有其他方法可以轻松实现该功能?你知道吗
没有这样的语法。以编程方式操作切片的唯一方法是slice对象。你知道吗
slice
i = slice(ind, ind+x) print(x[i])
不,Python没有这样的语法。这没关系,尽管Python并不是一种重视十种方法的语言。你知道吗
why there is no single operator to achieve that?
自从Python的早期版本以来,列表切片的语法没有改变。原因可能是个人的判断或其他语言的影响。就是这样。我们必须学会接受它。你知道吗
Is there any other way to easily achieve that functionality?
好吧,当然。注[]是__getitem__的语法糖,ind:ind+x可以表示为slice对象。也许你更喜欢第二种变体?你知道吗
[]
__getitem__
ind:ind+x
L = list(range(10)) L[3:7] # [3, 4, 5, 6] m, k = 3, 4 L.__getitem__(slice(m, m+k)) # [3, 4, 5, 6]
没有这样的语法。以编程方式操作切片的唯一方法是
slice
对象。你知道吗不,Python没有这样的语法。这没关系,尽管Python并不是一种重视十种方法的语言。你知道吗
自从Python的早期版本以来,列表切片的语法没有改变。原因可能是个人的判断或其他语言的影响。就是这样。我们必须学会接受它。你知道吗
好吧,当然。注
[]
是__getitem__
的语法糖,ind:ind+x
可以表示为slice
对象。也许你更喜欢第二种变体?你知道吗相关问题 更多 >
编程相关推荐