如何实现列表列表与单列表匹配,替换不匹配元素为'X'
问题
给定两个列表:
a = [1,2,3,4,5] b = [[3,4],[4,5],[6,7]]
需要将列表b中的每个子列表与列表a的元素逐一对比,生成一个与b长度一致的嵌套列表——对应位置元素匹配则保留原元素,不匹配则替换为'X'。预期输出如下:
c = [['X','X',3,4,'X'],['X','X','X',4,5],['X','X','X','X','X']]
此前尝试过Stack Overflow上的单列表对比方案,但无法满足嵌套列表与单列表的对比需求。
解决方案
可以通过两层列表推导式实现需求,代码如下:
a = [1,2,3,4,5] b = [[3,4],[4,5],[6,7]] # 生成目标列表 c = [[num if num in sub_b else 'X' for num in a] for sub_b in b] print(c)
逻辑说明
- 外层列表推导式遍历
b中的每一个子列表sub_b; - 内层列表推导式遍历
a中的每一个元素,判断该元素是否存在于当前子列表sub_b中:- 存在则保留原元素;
- 不存在则替换为
'X';
- 最终生成的嵌套列表完全符合预期格式。
内容的提问来源于stack exchange,提问作者Jazz365
相关产品推荐
相关产品推荐

