已知:
有两个列表
lista=[1,2,3,4,5,6]
listb=[7,8,9,10,11,12]
有一个两者部分元素之间的关系的二维列表
list-ab=[#[2,9] , [3,11] , [5,12],[1,7]#]
想要生成如下结果:
def llab():
lista = [1, 2, 3, 4, 5, 6]
listb = [7, 8, 9, 10, 11, 12]
list_ab = [[2, 9], [3, 11], [5, 12], [1, 7]]
abi = [lista.insert, listb.insert]
ida = lista.index
idb = listb.index
for a, b in sorted(list_ab):
ai = ida(a)
bi = idb(b)
if s := abs(ai - bi):
ins = abi[ai > bi]
idx = min(ai, bi)
for _ in range(s):
ins(idx, '-')
ab = [lista, listb]
al, bl = map(len, ab)
ab[al > bl].extend(['-'] * abs(al - bl))
print(*lista, sep='\t')
print(*listb, sep='\t')
if ismain := __name__ == '__main__':
llab()
你题目的解答代码如下:
lista=[1,2,3,4,5,6]
listb=[7,8,9,10,11,12]
list_ab=[[2,9] , [3,11] , [5,12]]
dict_a={ k:v for k,v in list_ab }
dict_b={ k:v for v,k in list_ab }
r1 = []
r2 = []
i = 0
j = 0
while i<len(lista) and j<len(listb):
a = lista[i]
b = listb[j]
if dict_a.get(a)==None or dict_a.get(a)==b:
r1.append(str(a))
i += 1
else:
r1.append("-")
if dict_b.get(b)==None or dict_b.get(b)==a:
r2.append(str(b))
j += 1
else:
r2.append("-")
while i<len(lista):
r1.append(str(lista[i]))
i += 1
r2.append("-")
while j<len(listb):
r1.append("-")
r2.append(str(listb[j]))
j += 1
print(r1)
print(r2)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
啥子规律,狗看了需求都得回去哭一顿
两者部分元素之间的关系的二维列表,你重新举个例子呢。
你那个例子乱了,看不懂