【问题标题】:Check if a list is the exactly the same as the tuple检查列表是否与元组完全相同
【发布时间】:2018-03-07 15:07:03
【问题描述】:

我正在尝试编写一个程序,如果用户使用给定的元组输入完全相同的数据,它将打印('available'),否则,它将附加新数据。但是即使我输入了完全相同的数据,我的程序也不会打印“可用”。

data = ['Karma', 19, 'e', 'Kunugigaoka JH']
user = [input('name:'), int(input('age: ')), input('section: '), input('school: ')]
if user in data: 
    print('still available')
else: 
    data = data.append(user), print(data, 'your new data is now added')

那里的错误代码是什么?是 if 语句中的“in”吗?如何解决?谢谢

【问题讨论】:

    标签: python python-3.x list tuples


    【解决方案1】:

    以下是您的代码的功能版本。

    data = [['Karma', 19, 'e', 'Kunugigaoka JH']]
    user = [input('name:'), int(input('age: ')), input('section: '), input('school: ')]
    
    if user in data:
        print('still available')
    else:
        data.append(user)
        print(user, 'your new data is now added')
    

    说明

    • 您的数据格式必须是列表列表,这样您的程序才能按预期工作。
    • list.append 没有 return 任何东西,所以不要分配给变量。

    【讨论】:

      【解决方案2】:

      in 将检查数据的每个元素。所以在这种情况下:

      data = ['Karma', 19, 'e', 'Kunugigaoka JH']
      

      它将检查'Karma',然后是19,然后...

      您应该尝试:

      data = [['Karma', 19, 'e', 'Kunugigaoka JH']]
      

      这是一个列表,在一个列表中。现在in 将检查的第一件事是:

      ['Karma', 19, 'e', 'Kunugigaoka JH']
      

      【讨论】:

      • 只需将data 设置为一组并使用set.add()
      • @Chris_Rands 列表不能是集合的成员。
      • @glibdud 哎呀,但是这些列表可能是元组,这取决于他们接下来要做什么
      【解决方案3】:

      这个答案完全基于这个问题的标题:

      假设你有:

      >>>a = [1,2,3] #REMEMBER for this method to work the list and tuple should be in exact oder
      >>>b = (1,2,3)
      
      >>>all( [i==j for i,j in zip(a,b)] )
      True
      >>>b = (3,2,1) #Here though a and b have the same elements but not the same order
      >>>all( [i==j for i,j in zip(a,b)] )
      Flase
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-02
        • 1970-01-01
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多