Tom*_*mKo 2 python logic if-statement list
list = ["apples", "oranges", "jerky", "tofu"]
if "chew" in action and list[:] in action:
print "Yum!"
else:
print "Ew!"
Run Code Online (Sandbox Code Playgroud)
我如何进行逻辑检查,检查"chew"在行动中以及列表中的任何值?例如,我想打印"百胜!" 行动是"嚼橙子"还是"嚼不烂".
为什么不使用内置any()函数?以下对我来说似乎很Pythonic:
foods = ["apples", "oranges", "jerky", "tofu"]
if "chew" in action and any(f in action for f in foods):
print "Yum!"
else:
print "Ew!"
Run Code Online (Sandbox Code Playgroud)
当然,只搜索简单的子串可能会产生一些奇怪的结果.例如"jerkeyblahchew",仍然会匹配该"Yum!"类别.你可能想要action分成单词,并寻找紧随其后的食物名称"chew"(正如@Peter Lyons在他的答案中建议的那样,前两个单词的简单情况"chew X").
忽略顺序,你可以通过使用类似下面的内容来专注于空格分隔的单词(并进一步忽略大写/小写):
foods = ["apples", "oranges", "jerky", "tofu"]
action_words = set(word.lower() for word in action.split())
if "chew" in action_words and any(f in action_words for f in foods):
print "Yum!"
else:
print "Ew!"
Run Code Online (Sandbox Code Playgroud)