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

Compare Multiple Variable (or String) to List

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

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

有没有什么简单的方法可以做到这一点(不重复 in myList 或任何简单的方法用于许多输入)?上面例子的正确答案是 'any'.

逻辑应该能够处理 'or' 和 'and'。 *我已经浏览过这个主题,但找不到我正在寻找的答案

您可以创建一个包含所有要检查的项目的新列表并浏览新列表:

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)

您可以使用集合而不是列表。然后使用 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))

我喜欢使用 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')

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