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

Bru*_*elb 2 python slice

根据使用元组创建切片,您可以方便地执行:

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

但我需要的是先进的:

a[5:]
a[:12]
a[:]
a[-1]
a[-2:]
a[:-2]
a[::-1]
Run Code Online (Sandbox Code Playgroud)

怎么用元组和*args

b = (5,:)
>>  File "<ipython-input-26-c4eae928199d>", line 1
>>    b = (5,:)
>>           ^
>>SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

Abh*_*jit 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)
Run Code Online (Sandbox Code Playgroud)

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