Python:如何获取二维列表中值为1的元素的相邻索引
提取二维列表中值为1元素的自身及左右相邻索引
问题描述
给定二维列表:
data = [[0,0,0,0,0,1,0,0,0,0], [0,1,0,0,0,0,0,0,0,0]]
需要获取每个子列表中值为1的元素的自身索引、左侧相邻索引、右侧相邻索引,预期输出:
[[4, 5, 6], [0, 1, 2]]
示例说明:
- 第一行中值为1的元素索引是5,对应取左侧4、自身5、右侧6
- 第二行中值为1的元素索引是1,对应取左侧0、自身1、右侧2
解决方案
通过遍历二维列表的每个子列表,定位值为1的元素索引后计算相邻索引,代码实现如下:
data = [[0,0,0,0,0,1,0,0,0,0], [0,1,0,0,0,0,0,0,0,0]] result = [] for sub_list in data: # 找到子列表中值为1的元素索引 idx = sub_list.index(1) # 生成包含左、自身、右的索引列表 result.append([idx-1, idx, idx+1]) print(result)
运行后即可得到预期输出。
补充说明
- 上述代码默认每个子列表仅存在一个值为1的元素,若有多个1,可改用循环遍历所有匹配索引并分别处理;
- 若1出现在子列表首尾位置(如索引0或最后一位),
idx-1或idx+1会得到负数或超出列表长度的索引,可根据需求添加边界判断逻辑(比如保留边界值或跳过无效索引)。
内容的提问来源于stack exchange,提问作者Bhar Jay
相关产品推荐
相关产品推荐

