如何用Python高效将含短语与单词的列表转为纯单词列表?
高效拆分短语列表为单词列表的Python实现
这是个很常见的文本处理需求,我来给你几个高效的实现方案:
1. 最简洁直观的列表推导式方法
利用Python内置的split()方法(它默认按任意空白字符分割,还会自动过滤空字符串),结合列表推导式可以一行搞定:
list_of_phrases_and_words = ['I am', 'John', 'michael and', 'I am', '16', 'years', 'old'] list_of_words = [word for phrase in list_of_phrases_and_words for word in phrase.split()]
为什么这个方法高效?
split()是Python底层用C实现的方法,比纯Python写的循环分割快得多- 列表推导式本身也是Python中生成列表的高效方式,语法简洁且执行速度快
- 自动处理各种空白情况:不管短语里是单个空格、多个连续空格,甚至开头结尾的空格,
split()都能正确拆分出干净的单词
2. 超大数据集下的内存优化方案
如果你处理的是非常大的列表(比如百万级别的元素),可以用itertools.chain来避免生成中间子列表,进一步节省内存:
from itertools import chain list_of_phrases_and_words = ['I am', 'John', 'michael and', 'I am', '16', 'years', 'old'] list_of_words = list(chain.from_iterable(phrase.split() for phrase in list_of_phrases_and_words))
优势说明
chain.from_iterable会直接遍历每个phrase.split()生成的迭代器,把元素逐个拼接起来,不会先把所有子列表都存到内存里,对于超大数据集来说,内存占用会低很多。
注意事项
如果你的短语里有特定的分隔符(比如逗号加空格),可以给split()传参数,比如phrase.split(', '),但要注意:
- 不要直接用
split(' ')(带空格参数),因为这样会保留连续空格产生的空字符串,比如'hello world'.split(' ')会得到['hello', '', '', 'world'] - 无参数的
split()是处理空格分割的最优选择,它会匹配任意空白字符(空格、制表符、换行符等)并过滤空值
内容的提问来源于stack exchange,提问作者idkman
相关产品推荐
相关产品推荐

