Mik*_*ler 3 python list-comprehension file
我正在使用 python 将文本文件中句子中的单词转换为列表中的单个标记,以计算单词频率。我无法将不同的句子转换为单个列表。这是我所做的:
f = open('music.txt', 'r')
sent = [word.lower().split() for word in f]
Run Code Online (Sandbox Code Playgroud)
这给了我以下列表:
[['party', 'rock', 'is', 'in', 'the', 'house', 'tonight'],
['everybody', 'just', 'have', 'a', 'good', 'time'],...]
Run Code Online (Sandbox Code Playgroud)
由于文件中的句子在单独的行中,因此它返回此列表列表,并且 defaultdict 无法识别要计数的单个标记。
它尝试了以下列表理解来隔离不同列表中的标记并将它们返回到单个列表,但它返回一个空列表:
sent2 = [[w for w in word] for word in sent]
Run Code Online (Sandbox Code Playgroud)
有没有办法使用列表理解来做到这一点?或者也许是另一种更简单的方法?
只需在列表理解中使用嵌套循环:
sent = [word for line in f for word in line.lower().split()]
Run Code Online (Sandbox Code Playgroud)
这种方法有一些替代方法,例如使用itertools.chain.from_iterable(),但我认为在这种情况下嵌套循环要容易得多。