2011-12-18 57 views
-1

比賽我有兩個列表指數基於字符串在python

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 2011-12-18 06:55:00

+0

請現在看看我的例子。 – Anoop 2011-12-18 07:07:21

回答

2

如果你喜歡noob-style然後試試這個。容易明白。其他答案非常類似於函數式編程,這可能會讓人困惑。

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 2011-12-18 06:48:23

+4

你有沒有一個問題試圖詢問的實際問題,還是你沒有費心嘗試代碼? – 2011-12-18 06:49:51

+0

假設我正確地理解了這一點,如果你想修改它,所以它不會包括超過較小字符串長度的單詞,你可以做一些事情,如n = min(len(list1),len(list2))和然後返回在[:n] – 2011-12-18 07:10:02