把题目简化了一下,文件改为列表。
另零值没有改为'.'
- list1 = [['a1', 11, 'A', 0,286],
- ['a1', 21, 'CG', 13, 44],
- ['a1', 23, 'C', 52, 15],
- ['a1', 24, 'AG', 68, 14],
- ['a1', 36, 'AG', 59, 12]]
- list2 = [['a1', 11, 'A', 0, 130],
- ['a1', 21, 'CG', 13, 47],
- ['a1', 23, 'C', 47, 12],
- ['a1', 24, 'AG', 35, 20],
- ['a1', 32, 'C', 38, 41],
- ['a1', 33, 'A', 81, 13],
- ['a1', 36, 'AG', 65, 18],
- ['a1', 37, 'CT', 72, 11]]
- list3 = [['a1', 11, 'A', 0, 264],
- ['a1', 21, 'CG', 37, 23],
- ['a1', 32, 'C', 34, 29],
- ['a1', 33, 'A', 51, 14],
- ['a1', 34, 'CT', 54, 7],
- ['a1', 36, 'AG', 54, 6]]
- list4 = []
- j = 0
- for i in range(100):#假定列表第二列的范围在此之内
- if i in list(zip(*list1))[1] or i in list(zip(*list2))[1] or i in list(zip(*list3))[1]:
- #判断i是否在三个列表的第二列中,list(zip(*list1))是将列表转置
- list4.append([])
- list4[j].extend(['a1', i])
- for l1 in list1:
- if i == l1[1]:
- list4[j].extend(l1[2:])
- break
- else:
- list4[j].extend(['.', '.', '.'])
- for l2 in list2:
- if i == l2[1]:
- list4[j].extend(l2[2:])
- break
- else:
- list4[j].extend(['.', '.', '.'])
- for l3 in list3:
- if i == l3[1]:
- list4[j].extend(l3[2:])
- break
- else:
- list4[j].extend(['.', '.', '.'])
- j += 1
- for i in list4:
- print(i)
复制代码
输出
- ['a1', 11, 'A', 0, 286, 'A', 0, 130, 'A', 0, 264]
- ['a1', 21, 'CG', 13, 44, 'CG', 13, 47, 'CG', 37, 23]
- ['a1', 23, 'C', 52, 15, 'C', 47, 12, '.', '.', '.']
- ['a1', 24, 'AG', 68, 14, 'AG', 35, 20, '.', '.', '.']
- ['a1', 32, '.', '.', '.', 'C', 38, 41, 'C', 34, 29]
- ['a1', 33, '.', '.', '.', 'A', 81, 13, 'A', 51, 14]
- ['a1', 34, '.', '.', '.', '.', '.', '.', 'CT', 54, 7]
- ['a1', 36, 'AG', 59, 12, 'AG', 65, 18, 'AG', 54, 6]
- ['a1', 37, '.', '.', '.', 'CT', 72, 11, '.', '.', '.']
复制代码 |