匹配python

时间:2015-08-25 11:41:00

标签: python

我有两个不同长度的列表。

list1=['T','P','M','M','A','R','k','M','G','C']
list2=['T','P','M','M','A','R','k','S','G','C','N']

通过比较list1list2:结果必须是:

new_list1=['T','P','M','M','A','R','k','mis','M',  'G','C','mis']    
new_list2=['T','P','M','M','A','R','k','S',  'mis','G','C','N']      

该方法是将两个列表中的元素与重复项匹配。如果在同一位置存在不匹配的元素。例如,在list1中,M有三个副本,list2中有两个副本。结果必须指的是此位置M中缺少list2S中缺少字符list1,结果也必须分配给遗失。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您也可以尝试一下。它很简单:

list1=['T','P','M','M','A','R','k','M','G','C']
list2 =['T','P','M','M','A','R','k','S','G','C','N']

if len(list1) > len(list2):
        diff = len(list1) - len(list2)
        for i in range(0, diff):
                list2.append('mis')
else:
        diff = len(list2) - len(list1)
        for i in range(0, diff):
                list1.append('mis')

new_list1 = []
new_list2 = []
for i in zip(list1,list2):
        if i[0] == i[1]:
                new_list1.append(i[0])
                new_list2.append(i[1])
        elif i[0] == 'mis' or i[1] == 'mis':
                new_list1.append(i[0])
                new_list2.append(i[1])
        else:
                new_list1.append(i[0])
                new_list2.append('mis')

                new_list1.append('mis')
                new_list2.append(i[1])

print new_list1
print new_list2

输出:

['T', 'P', 'M', 'M', 'A', 'R', 'k', 'M', 'mis', 'G', 'C', 'mis']
['T', 'P', 'M', 'M', 'A', 'R', 'k', 'mis', 'S', 'G', 'C', 'N']