Python:如何将含单元素子列表的嵌套列表展开为一维列表
解决单层嵌套列表转一维列表的几种实用方法
嘿,这个需求太常见啦!针对你这种每个元素都只被一层子列表包裹的情况,我给你分享几个简单高效的实现方式:
方法1:列表推导式(最直观推荐)
这是Python里处理这类问题最常用也最易读的写法,直接遍历每个子列表并提取内部元素:
original_list = [['word'], ['word'], ['word'], ['word']] flattened_list = [item for sublist in original_list for item in sublist] print(flattened_list) # 输出: ['word', 'word', 'word', 'word']
它等价于更啰嗦的嵌套for循环,但简洁度拉满:
flattened_list = [] for sublist in original_list: for item in sublist: flattened_list.append(item)
方法2:sum()函数的小技巧
如果确定只有单层嵌套,用sum()可以一行搞定:
original_list = [['word'], ['word'], ['word'], ['word']] flattened_list = sum(original_list, []) print(flattened_list)
原理是sum()会把所有子列表和初始的空列表[]依次拼接,不过这个方法只适合单层嵌套,数据量很大时效率不如列表推导式。
方法3:itertools.chain(适合大数据量场景)
如果你的列表元素非常多,itertools.chain会更高效——它是生成器式的实现,不会提前占用大量内存:
import itertools original_list = [['word'], ['word'], ['word'], ['word']] flattened_list = list(itertools.chain.from_iterable(original_list)) print(flattened_list)
chain.from_iterable()会逐个取出子列表里的元素,最后转成列表就能得到目标结果。
根据你的实际场景选就行啦,简单场景用前两种,大数据量优先选第三种~
内容的提问来源于stack exchange,提问作者Cristina Dominguez Fernandez
相关产品推荐
相关产品推荐

