根据索引组合列表

Combining Lists According to Index

具有以下列表:

A=['q','r','s']
B=[0,4,0]
C=[0,0,0]

期望的输出是:

D=['q',0,0,'r',4,0,'s',0,0]

我尝试的解决方案:

D=[]
for i in B:
    D.append(A[B.index(i)])
    D.append(B[B.index(i)])
    D.append(C[B.index(i)])
print(D)

然而这里的输出是:

D=['q', 0, 0, 'r', 4, 0, 'q', 0, 0]

您可以看到 'q' 重复,我不确定为什么。 'q' 应该是 's'.

谢谢

这应该有效

# use zip function to traverse all 5 lists together
# use a nested loop to flatten the tuples created by zip
[e for x in zip(A, B, C, D, E) for e in x]
# ['asd', 1, 'ttt', 1, 0, 'qwe', 2, 'ttt', 2, 30, 'wer', 3, 'ttt', 5, 0]

您尝试的解决方案失败,因为列表 E 有重复,而您使用的是 index 方法

有两种方法可以修复您的解决方案 -

选项 1 - 使用没有重复的列表

for i in B:
    for j in [A, B, C, D, E]:
        G.append(j[B.index(i)])

选项 2 - 不使用索引

H = []
for i in range(len(E)):
    for j in [A, B, C, D, E]:
        H.append(j[i])

输出

['asd', 1, 'ttt', 1, 0, 'qwe', 2, 'ttt', 2, 30, 'wer', 3, 'ttt', 5, 0]
F=[]
for i in range(len(E)):
    F.append(A[i])
    F.append(B[i])
    F.append(C[i])
    F.append(D[i])
    F.append(E[i])
print(F)

输出:

['asd', 1, 'ttt', 1, 0, 'qwe', 2, 'ttt', 2, 30, 'wer', 3, 'ttt', 5, 0]