【问题标题】:Compare Multiple Variable (or String) to List将多个变量(或字符串)与列表进行比较
【发布时间】:2019-12-09 07:36:49
【问题描述】:

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

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 或许多输入的任何简单方法)?上述示例的正确答案是“任意”。

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

【问题讨论】:

    标签: python list logical-operators


    【解决方案1】:

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

    【讨论】:

    • 检查您的打印字符串。
    • 这是黄金,我需要根据我的实际情况对其进行一些编辑,但非常感谢!我的编辑: elif len(checkSet.difference(mySet))>0 和 len(checkSet.difference(mySet))
    【解决方案2】:

    已经存在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))
    

    【讨论】:

      【解决方案3】:

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

      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)

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2018-01-23
          • 2015-11-21
          • 2018-03-17
          • 1970-01-01
          • 2020-07-10
          • 1970-01-01
          • 1970-01-01
          • 2015-10-03
          • 2017-03-02
          相关资源
          最近更新 更多