解压缩特定索引

时间:2014-01-08 20:30:23

标签: python slice iterable-unpacking

我想从迭代中检索特定索引。这相当于:

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,6operator.itemgetter(2,3,5,6)(lst)的元素似乎是更好的解决方案,则使用切片工作:

In [8]: operator.itemgetter(2,3,5,6)(range(10))
Out[8]: (2, 3, 5, 6)

1 个答案:

答案 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]