2015-10-14 1 views
2

J'essaie de comparer deux listes pour voir s'il existe des chaînes correspondantes dans les listes.Recherche de chaînes correspondantes lors de la comparaison de deux listes

permet de dire list_1 est

['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'] 

et list_2 est

['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', '', '', '', '', '', '', '', '', ''] 

Je sais que « JCC » est dans les deux listes, mais ce type de fonction puis-je utiliser pour déterminer cela dans python? J'ai essayé une boucle for et beaucoup d'autres fonctions intégrées, mais je n'arrive pas à le faire fonctionner.

+0

Vous avez juste besoin d'un 'booléen' comme résultat? –

+0

Donc, vous voulez que la sous-chaîne corresponde? – cbare

+0

Je ne comprends pas ce que cela a à voir avec deux listes. – ergonaut

Répondre

3

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

2

Ceci est en fait facile avec 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

Serait-il possible d'imprimer uniquement la plus grande sous-chaîne commune? – Rsherrill

+0

Que voulez-vous dire par ** "large common substring" **? –

+0

sans vérification d'erreur appropriée: 'trié (set (list_1) & set (list_2), reverse = True) [0]' – AChampion

0

Ceci est une solution à l'aide pour boucles si vous avez besoin de plus d'une variable booléenne.

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