python - 如何在 python 的列表理解中包含布尔条件?
问题描述
输入: 我有一个字符串列表,其中包含我可以工作的地方:
ALL_CHANCES = ['I can work in China',
'I can work in Germany',
'I can work in Singapore',
'I can work in Norway']
我有另一个字符串列表,其中最好不要在以下位置工作:
HIGH_TAX = ['Germany',
'Norway']
输出: 我正在寻找一个简单的列表理解单线来过滤列表 1 中出现在列表 2 中的子字符串的项目:
GOOD_CHANCES = ['I can work in China',
'I can work in Singapore']
挑战:
但是,当我这样做时
GOOD_CHANCES = [item for item in ALL_CHANCES
if (not any(word for word in HIGH_TAX) in item)]
我产生以下错误:
'<string>' requires string as left operand, not bool
如何在 python 的列表理解中包含布尔条件?
解决方案
您可以更简单地执行以下操作:
GOOD_CHANCES = [item for item in ALL_CHANCES \
if not any(word in item for word in HIGH_TAX)]
在您的解决方案中,not any(word for word in HIGH_TAX)
正在评估 a bool
,然后将其与 string 进行比较item
。相反,如上所示,您可以在any
方法调用本身中包含子字符串检查
filter
使用该方法也可能更清楚:
filter(lambda item: not any(word in item for word in HIGH_TAX), ALL_CHANCES)
推荐阅读
- google-cloud-platform - 谷歌云功能授权失败
- javascript - 在同一个函数中调用一个函数( async )
- ubuntu - nginx已安装但找不到命令
- android - 如何使用破折号流设置 Exoplayer?
- python - model.predict() 以多个数据集作为输入
- spring-boot - Spring Boot 未从 Windows 中的环境变量中选取值
- google-cloud-platform - 仅更新 Google Cloud Datastore 中实体的某些字段的问题
- php - 如何将 python 代码的输出从 jupyter notebook 导入到 php?
- android - 如何将 SecondActivity 值返回到开始时的状态
- c++ - 出于测试目的:哪些浮点(IEEE754 32b)数字是“特殊的”?