使用* args进行元组高级切片

时间:2014-04-22 05:35:37

标签: python slice

根据Create a slice using a tuple,你可以方便地做到:

>>> a = range(20)
>>> b = (5, 12)
>>> a[slice(*b)]
[5, 6, 7, 8, 9, 10, 11]

但我需要的是先进的:

a[5:]
a[:12]
a[:]
a[-1]
a[-2:]
a[:-2]
a[::-1]

如何使用元组和*args

执行此操作
b = (5,:)
>>  File "<ipython-input-26-c4eae928199d>", line 1
>>    b = (5,:)
>>           ^
>>SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:7)

对于要省略的选项,请将其替换为None。通常,如果省略任何选项,则默认为None

因此slice(None, None, None)之类的选项等同于a[::]。另请注意startstep参数默认为None

有关。离。

a[5:]  -> b=(5,None,None)
a[:12] -> b=(None,12)
a[:]   -> b=(None,None)

这里需要注意的一点是,切片与索引不同。因此,如果您打算编制索引,则无法使用slice内置函数。