检查列表是否与元组完全相同

时间:2018-03-07 15:07:03

标签: python python-3.x list tuples

我试图创建一个程序,如果用户输入与给定元组完全相同的数据,它将打印('可用'),否则,它将附加新数据。但即使我输入了完全相同的数据,我的程序也不打印“可用”。

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',以及如何修复它?谢谢

3 个答案:

答案 0 :(得分:3)

以下是您的代码的正常版本。

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任何内容,因此请勿指定给变量。

答案 1 :(得分:1)

in会检查您数据的每个元素。所以在:

的情况下
data = ['Karma', 19, 'e', 'Kunugigaoka JH']

它会检查'Karma',然后检查19,然后检查......

相反,你应该尝试:

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

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

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

答案 2 :(得分:0)

  

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

假设你有:

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