我想在一个列表中合并2个列表,在这个列表中,我可以以相同的顺序找到两个列表的元素,例如:输入:
['10','22','3','4','5']
['22','3','5']
输出应为:
['10','22','3','4','5']
目标是将多个任务序列组合为一个序列,以便我们可以传递所有任务。我使用了下面的代码,但它重复了许多我们可以在逻辑上消除的任务,我想对其进行更多优化。
def merge(L,R):
S=[]
n=min(len(L),len(R))
for i in range(n):
if L[i]==R[i]:
S.append(L[i])
else:
S.append(L[i])
S.append(R[i])
if len(L)>len(R):
return(S+list(k for k in L[n:]))
if len(R)>len(L):
return(S+list(k for k in R[n:]))
if len(L)==len(R):
return(S)
# n is the number of tasks written in a text file before tasks and each task is written on a line
n=int(input())
resultat=[]
for i in range(n):
line=input().split()
resultat=merge(resultat,line)
print(resultat)
您的问题不清楚。
如果要合并任务列表并仅执行一次:
l1=['A' ,'B' ,'C' ,'D' ,'F']
l2=['C', 'D', 'E', 'F']
l3=['A', 'B', 'C', 'F']
l4=['A', 'C', 'B', 'F']
l5=['A','C' ,'D' ,'E' ,'F']
l6=['B', 'C', 'D', 'E', 'F']
import itertools as it
s=set(it.chain(l1, l1, l3, l4, l5, l6)))
print(list(s))
产生
['A', 'B', 'F', 'E', 'D', 'C']
否则,如果要在每个并行列表的每个步骤中都需要一组独特的任务,则>]
lo=[e for t in it.zip_longest(l1, l2, l3, l4, l5, l6) for e in set(t) if e is not None] print(lo)
产生
['B', 'A', 'C', 'B', 'D', 'C', 'B', 'E', 'D', 'C', 'F', 'E', 'D', 'F']