gpt4 book ai didi

Python检查列表中是否有字符串的任何部分

转载 作者:行者123 更新时间:2023-12-05 09:19:48 26 4
gpt4 key购买 nike

我有一个包含“Good”这个词的同义词的列表(此处的列表已缩短)

good_synonym = ['Good','good','Well','well']

程序询问用户感觉如何

print = 'Hello, ' + name + ', How are you?'
status = raw_input('')

但有时,用户可能会用“我很好”(或类似的)来回答问题

如果答案中包含好同义词列表中的单词,我希望程序回复

if status contains a word in good_synonym:
print ('That is good')
else:
print ('That is not so good')

注意第一行不是真正的python语言

但我不知道该用哪个短语来完成这个 Action 。

最佳答案

使用 set objects 而不是混合大小写单词的列表;集合使成员测试和交叉测试更容易。仅存储小写文本,并简单地将输入字符串小写:

good_synonym = {'good', 'well'}
# good_synonym = set(['good', 'well']) # Python 2.6

现在测试输入字符串是否为 disjoint setset.isdisjoint() .如果它不是一个不相交的集合,则这两个集合之间存在重叠,这意味着至少存在 'good''well':

if not good_synonym.isdisjoint(status.lower().split()):
print ('That is good')
else:
print ('That is not so good')

测试集合是否不相交是有效的;它只需要测试 good_synonym 集合中的第一个单词即可快速返回 False。您可以改为计算交集,但这总是会测试状态中的所有 单词以构建新的集合对象。

您可能见过的其他解决方案,使用 any() function ;给出 generator expression它也可以是高效的,因为如果任何输出为真,它会提前返回 True:

if any(word in good_synonym for word in status.lower().split()):

然而,这会在 Python 代码中完成所有循环和测试,而 set.isdisjoint() 完全在 C 代码中实现。

关于Python检查列表中是否有字符串的任何部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com