如何从矩阵中提取值及其对应的索引?附实现示例
实现矩阵元素与1-based索引的映射
当然可以实现,下面是两种基于Python的简洁方案,完全适配你的需求:
方法一:嵌套循环 + 字典赋值
S = [[1, 2], [4, 8]] result = {} # 遍历行,用start=1直接得到1-based行号 for row_idx, row in enumerate(S, start=1): # 遍历每行元素,同理得到1-based列号 for col_idx, num in enumerate(row, start=1): result[num] = (row_idx, col_idx) print(result) # 输出: {1: (1, 1), 2: (1, 2), 4: (2, 1), 8: (2, 2)}
方法二:字典推导式(更简洁)
S = [[1, 2], [4, 8]] result = {num: (row_idx, col_idx) for row_idx, row in enumerate(S, start=1) for col_idx, num in enumerate(row, start=1)} print(result) # 输出与上述一致
注意事项
- 如果矩阵存在重复元素,后面的元素会覆盖前面的索引映射——因为字典的键必须唯一。若要保留所有重复元素的索引,可以把值设为列表,比如用
result.setdefault(num, []).append((row_idx, col_idx))替代直接赋值。 - 上述代码默认采用1-based索引(从1开始计数),若需要0-based索引,去掉
enumerate参数里的start=1即可。
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

