我有幾個列表要連接到列表的新列表中。例如,列表可能是這樣的:將列表連接到列表的新列表中
[[], []]
[[3], [1]]
[[], [5]]
[[2,5], []]
,並在此基礎上我想輸出的樣子:
[[3, 2, 5], [1,5]]
我們不能假設有關清單的長度什麼(他們不會在開始時總是有兩個元素,他們可能會有更多)。
這裏是我試過的代碼:
list1[l] += list2[l] #where l is an index
我有幾個列表要連接到列表的新列表中。例如,列表可能是這樣的:將列表連接到列表的新列表中
[[], []]
[[3], [1]]
[[], [5]]
[[2,5], []]
,並在此基礎上我想輸出的樣子:
[[3, 2, 5], [1,5]]
我們不能假設有關清單的長度什麼(他們不會在開始時總是有兩個元素,他們可能會有更多)。
這裏是我試過的代碼:
list1[l] += list2[l] #where l is an index
如果我們知道每個頂級列表形狀其他所有比賽,那麼我們可以做這樣的事情使用列表解析:
lists = [
[[], []],
[[3], [1]],
[[], [5]],
[[2,5], []],
]
shape=len(lists[0])
res = [[val for lst in lists for val in lst[i]] for i in range(shape) ]
print(res)
輸出:
[[3, 2, 5], [1, 5]]
這完美的作品,謝謝! –
lst = [[[], []],[[3], [1]],[[], [5]],[[2,5], []]]
lstFinal = []
for i in range(0,len(lst[0])):
temp = []
for j in range(0,len(lst)):
temp.extend(lst[j][i])
lstFinal.append(temp)
print(lstFinal)
from functools import reduce
from operator import add
a = [[], []]
b = [[3], [1]]
c = [[], [5]]
d = [[2,5], []]
# transpose
z = zip(a, b, c, d)
# list(z) --> [([], [3], [], [2, 5]), ([], [1], [5], [])]
# flatten
def f(t):
return reduce(add, t)
m = map(f, z)
# result
for thing in m:
print(thing)
>>>
[3, 2, 5]
[1, 5]
>>>
您是否保證每個頂級列表中的對象數相同?) – Grigoriy
您的問題是什麼?你嘗試了什麼?什麼沒有奏效?發佈您的代碼。 – DyZ
@Grigoriy是的,他們將永遠匹配 –