Python 3:从另一个列表中检查多个匹配的字符串

问题描述:

我正在尝试编写一个函数,它接收一个字符串并检查是否存在来自其中一个单独列表的多个匹配项。Python 3:从另一个列表中检查多个匹配的字符串

比方说,名单是:

fruits = ['Apple', 'Orange', 'Pineapple', 'Durian', 'Lychee'] 

和输入字符串是:

"Apple, Orange" 

我想它返回如果从列表中两个或多个项目在输入字符串中。

所以:

"Durian, Apple, Orange" 

将返回。但是:

"Apple" 

会返回错误。

我只是不太清楚如何遍历输入字符串。将不胜感激任何帮助!

+1

你可以叫'.split()'输入字符串,这将给你一个列表,然后按照步骤[这里](http://*.com/questions/6159313/can-python-测试最会员制-多值-IN-A-列表)。 – tyteen4a03

+0

'sum(1 for x in input_str.split(',')if x in fruits)> = 2' –

+0

'len([a for a in your_str.split(',')if a in fruits])> 1 ' – MYGz

如果您还想重复计数(即输入字符串'apple, apple'也会返回True),则以下行应该执行该作业。

sum(f in fruits for f in fruit_str.split(', ')) > 1 

如果你想检查的独特性,以及,你可以预处理输入字符串,并检查他们在水果列表呈现之前删除重复。

sum(f in fruits for f in set(fruit_str.split(', '))) > 1 
+0

你也可以使用交点运算符'&',它应该比循环更有效率。 'len(set(fruit_str.split(','))&set(fruits))> = 2' –

+0

@HåkenLid:这是另一种方法,但我怀疑和交叉比循环更快。无论如何不需要循环? – Fallen

+0

在底层的C实现中,大概有一个循环。但是查找是恒定的时间,因为set被实现为哈希映射。 –