我不明白为什么any()没有按我期望的方式工作。下面,我想说,如果城市列表中的任何一个城市在短语.拆分(),返回True。但为什么当短语.拆分()是['replacement', 'windows', 'in', 'seattle', 'wa']
,而“西雅图”显然是在短语.拆分()列表?在
>>> cities = ['seattle', 'san antonio', 'denver']
>>> phrase = 'replacement windows in seattle wa'
>>> any(cities) in phrase.split()
False
>>> 'seattle' in phrase.split()
True
因为in},因此成员资格测试中从不包含该值。还要注意,按空间拆分将把
any(cities)
将为非空列表返回True
,或者为空列表返回{san antonio
分成两个单词,因此使用这种方法将无法匹配它。另一种方法是使用正则表达式:这与
if any(city in phrase for city in cities)
(它将找到sanantonio)非常相似,但是需要对phrase
进行多次解析,而不是regex只执行一次。在您可能还希望考虑
re.escaping
字符串并根据匹配的确切条件应用单词边界。在试试这句话
你最初的陈述并不是在考验“城市”里的每一个词短语.拆分()。”
因为
any(cities)
返回True,而True不在列表中:您可以使用此方法查看列表中是否有城市:
^{pr2}$相关问题 更多 >
编程相关推荐