读取和写入数组的变量片

2024-04-19 11:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我经常在需要使用切片时编写代码,如下所示:

>>> L[ind:ind+x]

我现在好奇的是:为什么没有一个单一的运营商来实现这一点?例如,在Verilog中,我们可以使用如下切片:

>>> L[ind+:x]

是否有其他方法可以轻松实现该功能?你知道吗


Tags: 数据方法代码功能切片rangeverilog运营商
3条回答

没有这样的语法。以编程方式操作切片的唯一方法是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对象。也许你更喜欢第二种变体?你知道吗

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]

相关问题 更多 >