2014-11-26 4 views
0

У меня есть два списка, которые я хочу, чтобы сравнить и распечатать общее в обоихСравнение списков и печать Общий

things=['Apple', 'Orange', 'Cherry','banana','dog','door','Chair'] 
otherThings=['Apple', 'Orange','TV' ,'Cherry','banana','Cat','Pen','Computer','Book'] 
if (things == otherThings): # this condtion will not work 
     print "%s\t%s" % (things, otherThings) 
else: 
     print "None" 

Вопрос: Что такое надлежащее состояние следует использовать в данном случае?

Ожидаемый результат:['Apple', 'Orange','Cherry','banana']

+0

вы имеете дело с 'list' не словарь !!! – Kasramvd

+0

Я должен исправить это (._.) "" – MEhsan

ответ

1

Преобразовать их на sets instead, а затем получить пересечение двух.

Фрагмент кода:

things = set(['Apple', 'Orange', 'Cherry','banana','dog','door','Chair']) 
otherThings = set(['Apple', 'Orange','TV' ,'Cherry','banana','Cat','Pen','Computer','Book']) 
print things & otherThings 
+0

Получаю этот синтаксисError при использовании наборов! 'things = {'Apple', 'Orange', 'Cherry', 'banana', 'dog', 'door', 'Chair'} ^ SyntaxError: недействительный синтаксис ' – MEhsan

+1

Странный. Какую версию Python вы используете? Это нормально работает с 2.7.8. – Makoto

+0

Это! Python 2.6.5 – MEhsan

3

Один из способов заключается в использовании set и логика and:

>>> set(things) & set(otherThings) 
set(['Orange', 'Cherry', 'Apple', 'banana']) 
0

список понимание будет строить список для вашего "ожидаемого результата":

>>> [thing for thing in things if thing in otherThings] 
['Apple', 'Orange', 'Cherry', 'banana'] 

Вместо этого выполните следующие действия:

for thing in things: 
    if thing in otherThings: 
     print "%s\t%s" % (thing, thing) 

, который будет больше похож

Apple Apple 
... 
Смежные вопросы