我有一个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"确保不包含重复的字符串
答案 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}的子集