将多个变量(或字符串)与列表进行比较



>我正在尝试制作一个逻辑,将多个字符串与列表进行比较,例如:

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')

已经存在anyall

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具有的anyall函数。连同列表理解,解决方案如下所示:

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')

您可以提供要检查的字符串列表作为任何可迭代对象。

相关内容

  • 没有找到相关文章

最新更新