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

Python中如何用双元素子列表作为二维数组的索引?

高效访问二维数组指定索引的方法

首先纠正你原代码里的两个问题:

  • range[n]是语法错误,应该写成range(n)
  • 双层循环完全没必要——你要访问的是每个子列表对应的二维索引,直接遍历coords里的每个元素即可

下面是几种更简洁高效的实现方式:

1. 原生Python简化遍历

直接解构每个子列表的两个索引值,一步完成访问:

coords = [[2,1],[3,4],[5,2]]
# 假设data_array是已定义的二维列表
for x, y in coords:
    print(data_array[x][y])

2. 批量获取值(列表推导式)

如果需要把所有结果先收集再处理,用列表推导式比逐个打印更高效:

values = [data_array[x][y] for x, y in coords]
print(values)  # 直接输出所有索引对应的值

3. 调整coords格式优化

如果允许修改coords的结构,可以把它拆成两个独立的一维列表(分别存x和y坐标),用zip配合遍历:

# 调整后的coords格式
xs = [2, 3, 5]
ys = [1, 4, 2]

# 遍历访问
for x, y in zip(xs, ys):
    print(data_array[x][y])

# 或者批量获取
values = [data_array[x][y] for x, y in zip(xs, ys)]

4. 大数据量场景:用numpy加速

如果处理的是大型二维数组,推荐用numpy,它支持批量索引,效率远高于原生Python循环:

import numpy as np

# 假设data_array是numpy二维数组
data_array_np = np.array(data_array)
coords_np = np.array(coords)

# 批量获取所有索引对应的值
values = data_array_np[coords_np[:, 0], coords_np[:, 1]]
print(values)

内容的提问来源于stack exchange,提问作者Clive Long

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:46:00