将所有数组连接到一个更大的数组 python

我有一个很大的数组,里面有很多子数组,我试图加入里面的所有子数组。我知道如何连接数组,但由于内部数组的数量各不相同,我不知道要制作一个函数来连接这些数组。我知道我需要一个或多个循环,但我不知道该怎么做。到目前为止,我一直像这样手动进行操作,并一直进行到最后一个索引:

ldata  = ldata[0]+ldata[1]+ldata[2]+ldata[3]+ldata[4]

其中 ldata 是更大的列表,所有索引都是内部列表。我该怎么做呢?

编辑:这是一个例子

a = [[1,2],[3,4],[5,6]]


ITMISS
浏览 251回答 4
4回答

30秒到达战场

您可以使用chain.from_iterable:from itertools import chaina = [[0, 1], [2, 3], [4, 5], [6, 7]]result = list(chain.from_iterable(a))print(result)输出[0, 1, 2, 3, 4, 5, 6, 7]

白板的微信

您可以抓取每个子列表并添加到新列表中。new_ldata = []for sublist in ldata:    new_ldata += sublist

守候你守候我

您可以为此使用 numpy concatenateimport numpy as npx = [[1,1],[2,2,2],[3],[4,4,4,4]]concated_x = np.concatenate(x) # now in numpy array formconcated_x = list(concated_x) # if you want it back to a list form

侃侃无极

如果您的列表不太长,请保持简单:>>> a[[1, 2, 3], [4, 5, 6], [7, 8, 9]]>>> sum(a, [])[1, 2, 3, 4, 5, 6, 7, 8, 9]我做了一些计时测量:>>> 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列表越多,列表越长,解决方案的chain性能会更好: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 resultdef 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))产量18.778313734044787 7.5882537689758465 2.5082976589910686 13.912770285038278这表明将数组与一个短函数相加也很不错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python