python - 解压特定索引

标签 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)

但是我不想多次计算迭代或者它很长并且我不想写太多 _

我的问题纯粹是出于好奇,我实际上使用的是局部变量,如上所示。

编辑:

一种解决方案是简单地使用带有符号iterable[start:end:step]的切片:

In [24]: (x, y) =  f()[1:4:2]  
In [25]: x, y  
Out[25]: (2, 4)`

EDDIT BIS: 如果您需要检索可迭代对象中的每个 n 个元素,但您想要索引 2,35,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/

相关文章:

python - 获取numpy矩阵中正方形的坐标

python - 压缩一个空的可迭代对象

php - 在 php 中解压一组参数

python - 简化函数

python - 使用 pandas dataframe 根据不同级别的键范围从多索引行中进行切片的便捷方法

c# - 在 C# 中进行类似 Python 的列表解包?

python - 尝试在 pandas 数据框中跨行插值时出错

python - 在函数中使用 urllib2

python - Google App Engine 兼容层

go - 从类型断言的接口(interface) slice 中删除元素