Python中如何简便地将列表多词元素拆分为单个词(单行实现)
嘿,这有几个更简洁的单行实现方案,完美适配你的需求:
1. 嵌套列表推导式(最直观,无需额外导入)
这应该是最常用也最易读的单行写法了,直接通过双层循环把每个元素拆分后展开:
my_list = ["one two","three two"] out_list = [word for item in my_list for word in item.split()]
运行后out_list就是["one","two","three","two"],逻辑清晰,新手也能一眼看懂。
2. 使用itertools.chain.from_iterable(效率最优,适合大数据量)
如果你的列表很大,推荐用这个方法,它不会创建中间的子列表,而是逐个生成元素,内存占用更低:
import itertools my_list = ["one two","three two"] out_list = list(itertools.chain.from_iterable(item.split() for item in my_list))
chain.from_iterable会把拆分后的可迭代对象直接串联起来,性能比sum方法好很多。
3. 简化版sum单行写法(不推荐大数据量)
你原来的两行代码其实也能合并成一行,但要注意把生成器表达式传进去(避免创建中间列表):
my_list = ["one two","three two"] out_list = sum((item.split() for item in my_list), [])
不过这种方法每次相加都会生成新列表,数据量大的时候性能会拉胯,所以只适合小列表场景。
总结一下:日常用嵌套列表推导式就够了,追求效率选itertools,sum的方法尽量少用~
内容的提问来源于stack exchange,提问作者Pyd
相关产品推荐
相关产品推荐

