如何合并两个独立列表的列表推导式,简化生成带布尔标记元组的Python代码
可以合并,有以下几种简洁的实现方式:
方法1:单列表推导式(无需额外导入依赖)
直接在列表推导式中先遍历布尔值和对应列表的配对,再遍历列表内的元素,一行即可完成:
result = [(item, flag) for flag, lst in [(True, a), (False, b)] for item in lst]
如果只是想把原写法压缩成一行,也可以直接合并列表相加的逻辑,可读性也很高:
result = [(item, True) for item in a] + [(item, False) for item in b]
方法2:借助itertools.chain(适合处理超长列表,更省内存)
如果两个列表的规模很大,用生成器表达式配合chain可以避免生成中间列表,内存效率更高:
from itertools import chain result = list(chain(((item, True) for item in a), ((item, False) for item in b)))
补充说明:你原来的拆分写法可读性其实很不错,除非对代码行数有明确要求,否则拆分的写法反而更容易后续维护修改。
内容的提问来源于stack exchange,提问作者NineWasps
相关产品推荐
相关产品推荐

