我有一个关于 python 中元组索引和切片的问题。我想写出更好、更清晰的代码。这是我的问题的简化版本:
我有一个元组 a = (1,2,3,4,5)
我想对其进行索引,以便得到 b = (1,2,4)
>。
是否可以在一次操作中完成此操作,或者我必须执行 b = a[0:2] + (a[3],)
?我考虑过用另一个元组建立索引,这是不可能的,我也搜索过是否有一种方法可以组合切片和索引。在我看来,必须有更好的方法来做到这一点。
非常感谢:)
最佳答案
正如评论中所述,您可以使用itemgetter
import operator
a = (1,2,3,4)
result = operator.itemgetter(0, 1, 3)(a)
如果您经常进行这种索引并且您的数组很大,您也可以看看numpy
,因为它支持更复杂的索引方案:
import numpy as np
a = (1,2,3,4)
b = np.array(a)
result = b[[0,1,3]]
如果数组非常大,或者您有一个巨大的单点列表,您想要包含它,那么提前构建切片列表将变得很方便。对于上面的示例,它将如下所示:
singlePoints = [3,]
idx = [*range(0,2), *singlePoints]
result = b[idx]
关于python - 元组索引、组合切片和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73068050/