You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

标准Python列表/数组有没有类似NumPy索引数组的等效索引方法?

类numpy花式索引的原生Python实现方案

原生Python列表和标准库array模块的数组都没有直接支持a[索引列表]这种语法,但可以通过简单写法实现完全一致的效果,无需依赖第三方库。

原生Python列表实现

有两种常用实现方式:

  • 列表推导式,写法简单易读,适合绝大多数场景:
a = [1, 2, 3, 4]
i = [3, 0, 1]
res = [a[idx] for idx in i]
print(res) # 输出 [4, 1, 2]
  • 借助operator.itemgetter实现,索引数量较多时代码更简洁:
from operator import itemgetter
a = [1, 2, 3, 4]
i = [3, 0, 1]
res = itemgetter(*i)(a)
# 输出默认是元组,需要转列表的话加一层list()即可
print(res) # 输出 (4, 1, 2)

标准库array数组实现

标准库的array.array是C实现的同类型高效数组,同样不支持花式索引语法,可参考列表的处理方式,需要保留array类型的话对结果重新构造即可:

import array
a = array.array('i', [1, 2, 3, 4])
i = [3, 0, 1]
res = array.array('i', (a[idx] for idx in i))
print(res) # 输出 array('i', [4, 1, 2])

如果需要高频处理这类索引需求,还是更推荐使用numpy,性能远高于原生Python写法,适合大量数据的计算场景。

内容的提问来源于stack exchange,提问作者Paul Jurczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:36:05