如何利用列表推导式从嵌套列表中获取值为1的坐标元组集合
用列表推导式提取嵌套列表中值为1的元素坐标集合
给定如下嵌套列表:
matrix = [[0, 0, 1], [1, 0, 0], [0, 1, 0]]
需要返回所有值为1的元素的(行,列)坐标元组组成的集合,预期结果为:
{(0, 2), (1, 0), (2, 1)}
可以结合enumerate和集合推导式(本质是列表推导式的集合版本)实现简洁的代码:
matrix = [[0, 0, 1], [1, 0, 0], [0, 1, 0]] # 用集合推导式直接生成目标集合 result = {(row_idx, col_idx) for row_idx, row in enumerate(matrix) for col_idx, val in enumerate(row) if val == 1} print(result)
代码说明:
enumerate(matrix)遍历每一行,同时获取行索引row_idx和当前行的元素列表row- 内层
enumerate(row)遍历当前行的每个元素,获取列索引col_idx和元素值val - 条件
if val == 1筛选出值为1的元素,将对应的坐标元组(row_idx, col_idx)纳入集合 - 直接使用大括号
{}生成集合,比先创建列表再通过set()转换更高效
⚠️ 注意:避免使用list作为变量名,这会覆盖Python内置的list类型,引发潜在问题,这里改用matrix作为变量名。
内容的提问来源于stack exchange,提问作者Luan Pacheco
相关产品推荐
相关产品推荐

