如何优化嵌套列表中基于元素值重复对应元素的代码实现?
简化嵌套列表处理的实现方案
可以利用嵌套列表推导式直接一步生成目标列表,无需额外的中间变量(如ls2、ls3),代码更简洁且可读性更强:
ls = [((0,3),(1,0),(2,2),(3,0)), ((0,0),(1,3),(2,2),(3,0))] modified_ls = [ tuple((x, 0) for x, n in sub_tuple for _ in range(n or 1)) for sub_tuple in ls ]
代码逻辑说明:
- 外层遍历原列表
ls中的每个子元组sub_tuple; - 内层遍历子元组里的每个元素
(x, n):- 当
n=0时,n or 1等价于1,生成1个(x, 0),符合原需求保留该元素; - 当
n≠0时,n or 1等价于n,生成n个(x, 0),实现重复效果;
- 当
- 最后将每个子元组的处理结果转为
tuple,组成最终的modified_ls。
验证结果
运行上述代码后,modified_ls的输出与你预期的完全一致:
[((0, 0), (0, 0), (0, 0), (1, 0), (2, 0), (2, 0), (3, 0)), ((0, 0), (1, 0), (1, 0), (1, 0), (2, 0), (2, 0), (3, 0))]
内容的提问来源于stack exchange,提问作者Xuemei
相关产品推荐
相关产品推荐

