如何通过在python中拆分列表元素来创建列表?

时间:2014-04-09 06:13:48

标签: python list

我们说我有:

sentences = ['The girls are gorgeous', 'I'm mexican']

我想获得:

words = ['The','girls','are','gorgeous', 'I'm', 'mexican']

我试过了:

words = [w.split(' ') for w in sentences] 

但没有预期的结果。

这是否适用于计数器(单词),因为我需要获得频率?

3 个答案:

答案 0 :(得分:6)

试试这个

sentences = ["The girls are gorgeous", "I'm mexican"]
words = [word for sentence in sentences for word in sentence.split(' ')]

答案 1 :(得分:4)

您的方法无效,因为split会返回一个列表。因此,您的代码会创建一个嵌套列表。您需要将其展平以与Counter一起使用。你可以用很多方式压扁它。

from itertools import chain
from collections import Counter
Counter(chain.from_iterable(words))

将是展平嵌套列表并查找频率的最佳方法。但是你可以使用生成器表达式,比如这个

sentences = ['The girls are gorgeous', "I'm mexican"]
from collections import Counter
print Counter(item for items in sentences for item in items.split())
# Counter({'mexican': 1, 'girls': 1, 'are': 1, 'gorgeous': 1, "I'm": 1, 'The':1})

这将获取每个句子,将其拆分以获取单词列表,迭代这些单词并展平嵌套结构。

如果你想找到前10个单词,那么你可以使用Counter.most_common方法,就像这样

Counter(item for items in sentences for item in items.split()).most_common(10)

答案 2 :(得分:2)

试试这个:

words = ' '.join(sentences).split()