读写数组的可变切片

时间:2018-09-11 12:38:53

标签: python python-3.x list

众所周知,我们可以使用切片轻松地从数组中提取数据:

>>> L = range(10)
>>> L[::2]
[0, 2, 4, 6, 8]

当我需要按如下方式使用切片时,我经常编写代码:

>>> L[ind:ind+x]

我现在很好奇的是:为什么没有一个单一的运营商能做到这一点?例如,在Verilog中,我们可以像这样使用切片:

>>> L[ind+:x]

还有其他方法可以轻松实现该功能吗?

3 个答案:

答案 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])