2011-12-18 5 views
-1

У меня есть два спискана основе индекса строки совпадает с питоном

list1 = ['this', 'is', 'the', 'right', 'string'] 
list2 = ['this', 'is', 'right'] 

После сравнения мне нужно найти еще один список включает только

list3 = ['this', 'is'] 

Я попытался его с помощью перекрестка, я знаю, что это не соответствующее решение в моем случае.

>>> list(set(list1) & set(list2)) 
['this', 'is', 'right'] 

Это не сравнение на основе индекса.

Мне нужно найти сравнение на основе индекса. Я имею в виду, сначала сравните первые слова в list1 и list2, если это совпадение, затем возьмите следующие слова в каждом списке, затем сравните эти слова и так далее. Если это не соответствует, то верните только совпадающие слова. Кто-нибудь может мне помочь?

+0

Предполагая, что list1 и list2 включают в себя различное количество слов, после сравнения двух списков мне нужно найти совпадающие по индексу списки. В приведенном выше примере мне нужно найти list3 = ['this', 'is']. можешь мне помочь?? – Anoop

+0

, пожалуйста, посмотрите мой пример сейчас. – Anoop

ответ

2

Если вам нравится noob-стиль, попробуйте это. Легко понять. Этот ответ очень похож на функциональное программирование, которое может ввести в заблуждение.

list3 = list() 
for x in range(min(len(list1),len(list2)): 
    if list1[x] == list2[x]: 
     list3.append(list1[x]) 
    else: 
     break 
3
[x for (x, y) in zip(list1, list2) if x == y] 
+0

предположим, что list1 и list2 содержат различное количество слов, то как его решить? – Anoop

+4

У вас есть ФАКТИЧЕСКАЯ проблема, о которой задается этот вопрос, или вы еще не потрудились попробовать код? –

+0

Предполагая, что я правильно понимаю это, если вы хотите изменить это, чтобы он не включал слова за длину меньшей строки, вы могли бы сделать что-то вроде n = min (len (list1), len (list2)) и затем верните это понимание, нарезанное на [: n] –