>我正在尝试制作一个逻辑,将多个字符串与列表进行比较,例如:
myList=['str1','str2','str3']
if 'str1' in myList and 'str5' in myList and 'str10' in mylist:
print('all three')
elif 'str1' in myList or 'str5' in myList or 'str10' in mylist:
print('any')
有没有简单的方法可以做到这一点(不重复myList或任何简单的输入方法(?上面例子的正确答案是"any"。
逻辑应该能够处理"or"和"and"。 *我已经浏览了这个话题,但找不到我想要的答案
您可以使用集合而不是列表。然后使用issubset
函数表示子集和difference
长度,以检查两者之间是否存在任何公共值。
mySet={'str1','str2','str3'}
if {'str1' , 'str5', 'str10'}.issubset(mySet):
print('all three')
elif len({'str1' , 'str5', 'str10'}.difference(mySet))>0:
print('all three')
已经存在any
和all
compare_list = ['str1', 'str5', 'str10']
print(any(i in compare_list for i in myList))
print(all(i in compare_list for i in myList))
您可以创建一个包含要检查的所有项目的新列表并浏览新列表:
myList=['str1','str2','str3']
new_checks=['str2', 'str4']
for i in new_checks:
if i in myList:
print(i)
您还可以将结果保存到新列表中,如果它不为空,请打印您需要的任何内容:
myList=['str1','str2','str3']
new_checks=['str2', 'str4']
in_first_list=[]
for i in new_checks:
if i in myList:
in_first_list.append(i)
print(in_first_list)
或只是项目的长度.. len(in_first_list(
我喜欢使用python具有的any
和all
函数。连同列表理解,解决方案如下所示:
myList=['str1','str2','str3']
if all([s in myList for s in ['str1', 'str5', 'str10']]):
print('all three')
elif any([s in myList for s in ['str1', 'str5', 'str10']]):
print('any')
您可以提供要检查的字符串列表作为任何可迭代对象。