使用元组创建切片

Mik*_*ike 20 python arrays tuples slice python-3.x

在python中有什么方法可以使用元组作为切片的索引吗?以下内容无效:

>>> a = range(20)
>>> b = (5, 12)   # my slice indices
>>> a[b]          # not valid
>>> a[slice(b)]   # not valid
>>> a[b[0]:b[1]] # is an awkward syntax
[5, 6, 7, 8, 9, 10, 11]
>>> b1, b2 = b
>>> a[b1:b2]      # looks a bit cleaner
[5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)

这似乎是一个合理的pythonic语法,所以我很惊讶,我不能这样做.

(更新)解决方案原来是:

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

Chi*_*chi 37

您可以使用Python的*args语法:

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

基本上,您告诉Python将元组解压缩b为单个元素,并将每个元素slice()作为单独的参数传递给函数.


Foo*_*oon 10

怎么样a[slice(*b)]

那是足够的pythonic吗?