2015-10-14 117 views
2

我想比較兩個列表以查看列表中是否有任何匹配的字符串。比較兩個列表時發現匹配的字符串

可以說list_1

['GAAGGTCGAA', 'GAAGGTCGA', 'AAGGTCGAA', 'GAAGGTCG', 'AAGGTCGA', 'AGGTCGAA', 'GAAGGTC', 'AAGGTCG', 'AGGTCGA', 'GGTCGAA', 'GAAGGT', 'AAGGTC', 'AGGTCG', 'GGTCGA', 'GTCGAA', 'GAAGG', 'AAGGT', 'AGGTC', 'GGTCG', 'GTCGA', 'TCGAA', 'GAAG', 'AAGG', 'AGGT', 'GGTC', 'GTCG', 'TCGA', 'CGAA', 'GAA', 'AAG', 'AGG', 'GGT', 'GTC', 'TCG', 'CGA', 'GAA', 'GA', 'AA', 'AG', 'GG', 'GT', 'TC', 'CG', 'GA', 'AA', 'G', 'A', 'A', 'G', 'G', 'T', 'C', 'G', 'A', 'A'] 

list_2

['CCTCGGGA', 'CCTCGGG', 'CTCGGGA', 'CCTCGG', 'CTCGGG', 'TCGGGA', 'CCTCG', 'CTCGG', 'TCGGG', 'CGGGA', 'CCTC', 'CTCG', 'TCGG', 'CGGG', 'GGGA', 'CCT', 'CTC', 'TCG', 'CGG', 'GGG', 'GGA', 'CC', 'CT', 'TC', 'CG', 'GG', 'GG', 'GA', 'C', 'C', 'T', 'C', 'G', 'G', 'G', 'A', '', '', '', '', '', '', '', '', '', 'CCTCGGG', '', '', '', '', '', '', '', '', ''] 

我知道「TCG」是兩個列表,但是我可以使用什麼類型的功能,蟒蛇內確定這一點?我嘗試了一個for循環和許多其他內置函數,但我無法使它工作。

+0

你只需要'boolean'作爲結果? –

+0

所以你想要子字符串匹配? – cbare

+0

我不明白有兩個列表與此有關。 – ergonaut

回答

3

bool(set(list_1) & set(list_2))

2

這與set

print set(list_1) & set(list_2) 
print bool(set(list_1) & set(list_2)) 
#set(['A', 'C', 'G', 'CG', 'GG', 'T', 'GA', 'TCG', 'TC']) //common strings 
#true //Boolean result 

DEMO

http://ideone.com/y0GltE

+0

是否有可能只打印larges common substring? – Rsherrill

+0

**「larges common substring」**是什麼意思? –

+0

沒有適當的錯誤檢查:'sorted(set(list_1)&set(list_2),reverse = True)[0]' – AChampion

0

這是使用一種解決方案實際上容易如果你需要比布爾變量更多的循環。

for item1 in list1: 
    for item2 in list2: 
     if item1 == item2: 
      print item1