众所周知,我们可以使用切片轻松地从数组中提取数据:
>>> L = range(10)
>>> L[::2]
[0, 2, 4, 6, 8]
当我需要按如下方式使用切片时,我经常编写代码:
>>> L[ind:ind+x]
我现在很好奇的是:为什么没有一个单一的运营商能做到这一点?例如,在Verilog中,我们可以像这样使用切片:
>>> L[ind+:x]
还有其他方法可以轻松实现该功能吗?
答案 0 :(得分:2)
为什么没有单一的运营商来实现这一目标?
自Python的早期版本以来,列表切片的语法没有改变。 原因可能是由于个人的判断或其他语言的影响。就是这样。我们必须学会忍受它。
还有其他方法可以轻松实现该功能吗?
好的,当然。注意[]
是__getitem__
的语法糖,ind:ind+x
可以表示为slice
对象。也许您更喜欢第二种变化?
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]
答案 1 :(得分:1)
否,Python没有这样的语法。没关系-Python不是一种值得一提的十种方法。
答案 2 :(得分:1)
没有这样的语法。以编程方式操作切片的唯一内容是slice
对象。
i = slice(ind, ind+x)
print(x[i])