【问题标题】:How to check if all elements of a tuple are elements of other tuple in python?如何检查一个元组的所有元素是否是python中其他元组的元素?
【发布时间】:2019-08-27 17:38:57
【问题描述】:

所以我有两个元组,比如说 seq_a 和 seq_b。如果 seq_a 的每个元素也是 seq_b 的一个元素,我想打印“True”。

请不要建议一个函数,我希望它使用循环或 if-else 等来完成

我尝试使用 for 循环,但无法完全理解语法。

seq_a = eval(input("Enter a tuple: "))
seq_b = eval(input("Enter a tuple: "))


for i in seq_a:
    if i in seq_b:
        print("True")
    break
else:
    print("False")

【问题讨论】:

  • 如果出现重复,你想做什么?
  • @wim 如果第一个元组有 (1,2,1) 而第二个元组有 (1,2),我希望结果为真

标签: python python-3.x for-loop tuples


【解决方案1】:

i 不在seq_b 中时,您可以打印"False"break,如果都在(else 子句),则打印"True"

for i in seq_a:
    if i not in seq_b:
        print("False")
        break
else:
    print("True")

【讨论】:

    【解决方案2】:

    有几种方法。 “当面”的方式是使用循环

    result = True
    for i in seq_a:
        if i not in seq_b:
            result = False
            break
    print(str(result))
    

    你可以使用列表推导做同样的事情

    result = all(i in seq_b for i in seq_a)
    print(str(result))
    

    或者按照其他答案之一的建议,您可以使用集合操作

    result = set(seq_a).issubset(set(seq_b))
    print(str(result))
    

    【讨论】:

      【解决方案3】:

      你为什么不直接调整你的代码,让它记住其他元组中是否有某些东西?

      all_the_same = true
      for i in seq_a:
          if i not in seq_b:
              all_the_same = False
              break
      
      print(all_the_same)
      

      或者,编写一个函数来返回它们是否相同:

      function test_tuples(seq_a,seq_b):
        for i in seq_a:
          if i not in seq_b:
              return False
        return True
      
      print(test_tuples(seq_a,seq_b))
      

      【讨论】:

        【解决方案4】:

        将元组转换为集合并使用集合差异。

         Set(tuple1)-Set(tuple2) 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-29
          相关资源
          最近更新 更多