为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2021-08-11 21:59:29
我有一个很大的数组,里面有很多子数组,我试图加入里面的所有子数组。我知道如何连接数组,但由于内部数组的数量各不相同,我不知道要制作一个函数来连接这些数组。我知道我需要一个或多个循环,但我不知道该怎么做。到目前为止,我一直像这样手动进行操作,并一直进行到最后一个索引:ldata  = ldata[0]+ldata[1]+ldata[2]+ldata[3]+ldata[4]其中 ldata 是更大的列表,所有索引都是内部列表。我该怎么做呢?编辑:这是一个例子a = [[1,2],[3,4],[5,6]]
查看完整描述

4 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您可以使用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]


查看完整回答
反对 回复 2021-08-11
?
白板的微信

TA贡献1883条经验 获得超3个赞

您可以抓取每个子列表并添加到新列表中。


new_ldata = []

for sublist in ldata:

    new_ldata += sublist


查看完整回答
反对 回复 2021-08-11
?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以为此使用 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


查看完整回答
反对 回复 2021-08-11
?
侃侃无极

TA贡献2051条经验 获得超10个赞

如果您的列表不太长,请保持简单:


>>> 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 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))

产量


18.778313734044787 7.5882537689758465 2.5082976589910686 13.912770285038278

这表明将数组与一个短函数相加也很不错。


查看完整回答
反对 回复 2021-08-11
  • 4 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号