搜索python列表是否存在仅一组字符串的组合

时间:2016-05-15 21:43:17

标签: python list

我有一个python列表,可以有多个字符串和/或单个字符串

my_list = ['string1', 'string2', 'string3', 'string4', 'string5']
#or,
my_list = ['string1']
#or,
my_list = ['string3']
#or,
my_list = ['string1', 'string3']
#or,
my_list = ['string4'] #... and so on

我想搜索列表,以便能够构建一个条件,该条件准确检查' string1'的存在。或者' string3'或' string1和string3'。我通过组合这些列表元素和if语句创建了一个if条件。

search_string = ",".join(my_list)
if (search_string == "string1" or search_string == "string3" or search_string == "string1,string3"):
    # Do my stuff

此解决方案有效。但是,我不喜欢我的if语句结构。有没有更好的办法 ?我确实搜索并尝试使用""如,

if search_string in ("string1" or search_string == "string3" or search_string == "string1,string3")

但是,这没有用。是否有一种pythonic方式来实现这一目标?寻找单个班轮。输入" my_list"确保不包含重复的字符串

2 个答案:

答案 0 :(得分:2)

您想要检查超集:

st = {"string3","string1"}

if st.issuperset(my_list):

演示:

In [1]: st = {"string3", "string1"}

In [2]: my_list = ['string1', 'string2', 'string3']

In [3]: st.issuperset(my_list)
Out[3]: False

In [4]: my_list = ['string1', 'string3']

In [5]: st.issuperset(my_list)
Out[5]: True

In [6]: my_list = ['string1']

In [7]: st.issuperset(my_list)
Out[7]: True

In [8]: my_list = ['string3']

In [9]: st.issuperset(my_list)
Out[9]: True

答案 1 :(得分:1)

您可以使用套装:

>>> test = {'string1', 'string3'}
>>> my_list = {'string1', 'string2', 'string3', 'string4', 'string5'}
>>> len(my_list) > 0 and my_list <= test
False
>>> my_list = {'string1', 'string3'}
>>> len(my_list) > 0 and my_list <= test
True
>>> my_list = {'string3'}
>>> len(my_list) > 0 and my_list <= test
True

&lt; = condition检查my_list是否是{'string1','string3}的子集