加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何并行添加两个嵌套列表并将结果附加到python中的新列表

发布时间:2020-12-20 11:43:01 所属栏目:Python 来源:网络整理
导读:我试图并行添加两个不相等的嵌套列表的所有元素,并将结果追加到另一个新列表,我写了一些可以添加它们的hacky代码,但代码中有很多问题,首先我试图通过将0添加到列表的末尾来使这些对等于,但代码仍然遇到问题,因为第一对的长度是3而第二对的长度是4,我也尝试使
我试图并行添加两个不相等的嵌套列表的所有元素,并将结果追加到另一个新列表,我写了一些可以添加它们的hacky代码,但代码中有很多问题,首先我试图通过将0添加到列表的末尾来使这些对等于,但代码仍然遇到问题,因为第一对的长度是3而第二对的长度是4,我也尝试使用map但是我无法添加整数和NoneType,

import pdb
import itertools

x = [[2,3,3],[5,3]]
y = [[0,[2,3]]


for idx,(a,b) in enumerate(itertools.zip_longest(x,y)):
    while len(a) < len(b):
        x[idx].append(0)

    while len(b) < len(a):

        y[idx].append(0)

print(x,y)

new_list = list()
for i in zip(x,y):
    for idx,j in enumerate(i):
        for ind,a in enumerate(j):
            val = x[idx][ind] + y[idx][ind]
            new_list.append(val)
            print(new_list)

最终的结果应该是这样的

[2,6,7,3]

解决方法

您可以简单地使用 itertools.zip_longest并使用0填充,就像这样

>>> from itertools import zip_longest as zip
>>> x = [[2,3]]
>>> y = [[0,3]]
>>> [k + l for i,j in zip(x,y,fillvalue=[0]) for k,l in zip(i,j,fillvalue=0)]
[2,3]

即使x和y具有不等数量的元素,这也会起作用,

>>> from itertools import zip_longest as zip
>>> x = [[2,[1]]
>>> y = [[0,3]]    
>>> [k + l for i,1]

请注意,当我们压缩x和y时,我们使用[0]作为fillvalue.当我们输入i和j时,我们使用0作为填充值.

因此,如果x和y中的列表数不相等,则填充使用[0],当i和j中的元素数不相等时,将使用0作为填充.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读