我想从迭代中检索特定索引。这相当于:
In [7]: def f():
...: return [1,2,3,4,5]
In [8]: (_, x, _, y, _) = f()
In [9]: x, y
Out[9]: (2, 4)
但是我不想多次计算迭代次数,或者它很长,而且我不想写太多_
s
我的问题完全出于好奇,我实际上正在使用如上所示的局部变量。
修改:
一种解决方案是简单地使用带有符号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)
答案 0 :(得分:2)
一种稍微迂回的方式是使用itemgetter
模块中的operator
函数。
import operator
m = operator.itemgetter(2,3)
x, y = m([1,2,3,4,5])
对itemgetter
的调用会创建一个可调用的,可调用L
并返回L[2]
和L[3]
。