首页 > 解决方案 > 没有 in 的 python 列表理解

问题描述

如果flattend只是一个字符串列表,例如

['There','is','only','passion','and','piece','is','a','lie','lie','lie']

然后在以下两行

c = Counter(flattened)
vocab = [x for x, count in c.items() if count>=2]

[x for x,...] 部分是什么意思?另外,不应该count是元组类型,因为我认为它是一个计数器项目?这部分是怎么count>=2工作的?!

注意:我从调试中了解到,第一行将列表转换为计数器,第二行删除出现少于两次的项目。但我无法真正解释语法

标签: pythonlistlist-comprehension

解决方案


所以这里的语法有点混乱,但实际上发生的是每个项目c.items()都是一个包含单词及其计数的元组。

更清晰的写法是:

vocab = [x for (x, count) in c.items() if x>=2]

但也可以这样做:

vocab = [x[0] for x in c.items() if x[1]>=2]

元组在哪里x

c查看实际外观也很有帮助。如果你打印 c,你会看到:

>>> print c
Counter({'lie': 3, 'is': 2, 'and': 1, 'a': 1, 'There': 1, 'only': 1, 'passion': 1, 'piece': 1})

c.items()

>>> print c.items()
[('and', 1), ('a', 1), ('lie', 3), ('is', 2), ('There', 1), ('only', 1), ('passion', 1), ('piece', 1)]

推荐阅读