获取列表python中两个字符串之间的位置差异

时间:2015-07-07 01:31:24

标签: python string

我试图找出两个不同列表中两个字符串之间的位置差异。我一直在尝试的代码是..

a = ['ATG','TGA','CCC','GCT','TGA']

b = ['TCG','TGA','CCG','GCA','TGA']

for i,j in enumerate(a):
    if j != b[i]:
       print i,j,b[i]

此代码生成,,,

0 ATG TCG
2 CCC CCG
3 GCT GCA

我知道如何区分两个列表,但我想要的结果是..

 ATG TCG TC*
 CCC CCG **G
 GCT GCA **A

基本上,我想打印出列表中两个字符串之间的位置差异。我不知道从哪里开始,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您可以使用zip组合两个列表,然后将它们作为一对进行迭代

此处tmp变量使用join中的生成器表达式来检查值是否不同。如果不是,则会插入*

>>> for i,j in zip(a,b):
...     tmp = ''.join(v if v!=i[k] else '*' for k,v in enumerate(j) )
...     if tmp!='***':
...           print i,j,tmp
... 
ATG TCG TC*
CCC CCG **G
GCT GCA **A

答案 1 :(得分:0)

itertools可以在这里提供帮助。

import itertools


a = ['ATG','TGA','CCC','GCT','TGA']
b = ['TCG','TGA','CCG','GCA','TGA']

for a_word, b_word in itertools.izip(a, b):
    output = ''
    for a_char, b_char in itertools.izip(a_word, b_word ):
        if a_char == b_char:
            output += '*'
        else:
            output += b_char
    print a_word, b_word, output