我想从可迭代对象中检索特定索引。这相当于:
In [7]: def f():
...: return [1,2,3,4,5]
In [8]: (_, x, _, y, _) = f()
In [9]: x, y
Out[9]: (2, 4)
但是我不想多次计算迭代或者它很长并且我不想写太多 _
我的问题纯粹是出于好奇,我实际上使用的是局部变量,如上所示。
编辑:
一种解决方案是简单地使用带有符号iterable[start:end:step]
的切片:
In [24]: (x, y) = f()[1:4:2]
In [25]: x, y
Out[25]: (2, 4)`
EDDIT BIS:
如果您需要检索可迭代对象中的每个 n
个元素,但您想要索引 2,3
和 5,6
处的元素,则可以使用切片使用 operator.itemgetter(2,3,5,6)(lst)
似乎是一个更好的解决方案:
In [8]: operator.itemgetter(2,3,5,6)(range(10))
Out[8]: (2, 3, 5, 6)
最佳答案
一种稍微迂回的方法是使用 operator
模块中的 itemgetter
函数。
import operator
m = operator.itemgetter(2,3)
x, y = m([1,2,3,4,5])
对 itemgetter
的调用创建一个可调用对象,它接受可迭代的 L
并返回 L[2]
和 L[3]
.
关于python - 解压特定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005854/