微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将列表附加到列表列表

如何解决将列表附加到列表列表

在下面的代码中,我试图将一个名为 a 的列表附加到列表 b 的列表中。

a = [5,4]
b = [[4],[3],[8]]
b[2].append(a)

Python 输出

[[4],[8,[5,4]]] 

但是,我希望元素作为整数而不是列表附加,所以 b 应该是 [[4],5,4]] 然后我想合并列表所以 b 会是 [4,3,8,4]。我希望能够做到这一点,所以我可以使用 sum 函数来查找 b 元素的总和。有没有人有关于如何做到这一点的建议?

解决方法

首先,您试图扩展一个列表,而不是附加到它。具体来说,你想做

b[2].extend(a)

append() 将单个元素添加到列表中。 extend() 将许多元素添加到列表中。 extend() 接受任何可迭代对象,而不仅仅是列表。但最常见的是传递给它一个列表。

一旦你有你想要的列表,例如

[[4],[3],[8,5,4]] 

然后您需要连接这些列表以获得整数的平面列表。您可以使用 sum() - 添加列表与添加整数没有什么不同。

b = sum(b,[])

这里的技巧是您必须将初始(空)值传递给 sum(),否则它会尝试将 b 中的列表添加为数字。

最后,您可以按预期对扁平列表求和:

sum(b)
,

我的建议是使用 itertools 内置包中的 chain 函数,以更简洁和 Python 风格的方式实现您的目标。

只需要一行代码:

sum(chain(a,tuple(chain.from_iterable(b))))
,

如果我理解正确的话,你想要一个充满整数的列表 - 而不是一个包含整数列表的列表-。
无论如何,我会尽力为他们提供解决方案。

scopes: ['email']

输出:for i in range(len(a)): b[-1].append(a[i])

或者可能只是一个列表中的每个数字:

b = [[4],4]]

输出:for i in range(len(a)): b.append([a[i]])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。