根据索引组合列表
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]
具有以下列表:
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]