python - 没有 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
工作的?!
注意:我从调试中了解到,第一行将列表转换为计数器,第二行删除出现少于两次的项目。但我无法真正解释语法
解决方案
所以这里的语法有点混乱,但实际上发生的是每个项目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)]
推荐阅读
- java - NoSuchElementException 使用扫描仪
- amazon-cloudwatch - AWS Glue - Cloudwatch 事件 - 如何获取作业事件触发器的自定义参数
- angular - 如何在 ionic 4 中使用过滤器?
- wso2is - WSO2 ISKM 5.7.0 - mysql 辅助用户存储 - 自动重新连接属性不起作用
- python - 如何使用另一个表在 python SQL 中创建一个表?
- c# - 有没有办法使用 Artifacts 提要使用 Squirrel 进行更新?
- ssl - 结合端口 587 和 SSL 是否安全?
- python - 在 Python 中转换嵌套的字典列表
- c# - 实体框架 Linq 连接方法语法
- swagger - Swashbuckle.AspNetCore 5.2.1 和 autorest 3.0.6187 返回没有服务器条目