如何将多行含空列表的变量合并为单个包含所有非空元素的列表
解决方法:合并列表并消除空列表
嘿,这个需求很容易实现,我给你分享几个实用的方法:
方法1:基础循环遍历
先把所有需要处理的子列表集中起来,然后通过循环跳过空列表,把非空列表的元素添加到目标列表里:
# 把所有你的子列表放到一个集合里 sublists = [['Channels', ':'], [], ['AN1', 'AN2'], [], ['10v', '0.01V'], []] l = [] for sublist in sublists: if sublist: # 判断子列表非空,空列表在布尔判断里是False l.extend(sublist)
执行后l就会变成你想要的['Channels',':','AN1','AN2','10v', '0.01V']
方法2:简洁的列表推导式
用嵌套列表推导式可以一行搞定,逻辑和循环一致,但写法更紧凑:
sublists = [['Channels', ':'], [], ['AN1', 'AN2'], [], ['10v', '0.01V'], []] l = [item for sublist in sublists for item in sublist]
这里空列表里没有元素可以遍历,所以会被自动跳过,直接生成合并后的列表。
方法3:高效的itertools工具
如果你的子列表数量很多,用itertools.chain会更高效,它能直接串联所有子列表的元素:
from itertools import chain sublists = [['Channels', ':'], [], ['AN1', 'AN2'], [], ['10v', '0.01V'], []] l = list(chain.from_iterable(sublists))
chain.from_iterable会遍历每个子列表的元素,空列表不会产生任何输出,最终转换成列表就是你要的结果。
内容的提问来源于stack exchange,提问作者tejaswini muthuluru
相关产品推荐
相关产品推荐

