问题描述
在下面的代码中,我试图将一个名为 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]])