4 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用chain.from_iterable:
from itertools import chain
a = [[0, 1], [2, 3], [4, 5], [6, 7]]
result = list(chain.from_iterable(a))
print(result)
輸出
[0, 1, 2, 3, 4, 5, 6, 7]

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以抓取每個(gè)子列表并添加到新列表中。
new_ldata = []
for sublist in ldata:
new_ldata += sublist

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以為此使用 numpy concatenate
import numpy as np
x = [[1,1],[2,2,2],[3],[4,4,4,4]]
concated_x = np.concatenate(x) # now in numpy array form
concated_x = list(concated_x) # if you want it back to a list form

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果您的列表不太長(zhǎng),請(qǐng)保持簡(jiǎn)單:
>>> a
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> sum(a, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
我做了一些計(jì)時(shí)測(cè)量:
>>> timeit.timeit('sum([[1,2,3],[4,5,6],[7,8,9]], [])')
6.547808872535825
>>> timeit.timeit('reduce(lambda a, c: a + c, [[1,2,3],[4,5,6],[7,8,9]], [])', setup="from functools import reduce")
10.435796303674579
列表越多,列表越長(zhǎng),解決方案的chain性能會(huì)更好:
a = [list(range(20)) for x in range(30)]
def test_sum():
return sum(a, [])
def test_chain():
return list(itertools.chain.from_iterable(a))
def test_add():
result = []
for i in a:
result += i
return result
def test_list_comprehension():
return [x for l in a for x in l]
print(timeit.timeit(test_sum), timeit.timeit(test_chain), timeit.timeit(test_add), timeit.timeit(test_list_comprehension))
產(chǎn)量
18.778313734044787 7.5882537689758465 2.5082976589910686 13.912770285038278
這表明將數(shù)組與一個(gè)短函數(shù)相加也很不錯(cuò)。
添加回答
舉報(bào)