我试图找出两个不同列表中两个字符串之间的位置差异。我一直在尝试的代码是..
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
基本上,我想打印出列表中两个字符串之间的位置差异。我不知道从哪里开始,有人可以帮助我吗?
答案 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