Python:如果列表长度大于1,则对列表中的元素求和
我有一个简单的问题: 我有一个列表,如下所示:Python:如果列表长度大于1,则对列表中的元素求和,python,Python,我有一个简单的问题: 我有一个列表,如下所示: X= [[0], [4,5,6], [1], [4], [3, 4]] [[0], [15], [1], [4], [7]] 我想将其转换为一个长度为1的列表列表,其中子列表>1被求和,如下所示: X= [[0], [4,5,6], [1], [4], [3, 4]] [[0], [15], [1], [4], [7]] 我如何实现这个输出?这就是我所尝试的: for z in range(len(X)): if len
X= [[0], [4,5,6], [1], [4], [3, 4]]
[[0], [15], [1], [4], [7]]
我想将其转换为一个长度为1的列表列表,其中子列表>1被求和,如下所示:
X= [[0], [4,5,6], [1], [4], [3, 4]]
[[0], [15], [1], [4], [7]]
我如何实现这个输出?这就是我所尝试的:
for z in range(len(X)):
if len(X[z])>1:
sum(X[z])
但是它不起作用您可以创建一个只包含一个元素的列表,即内部列表的总和
sum_list = [[sum(il)] for il in X]
通过[sumil]你创建了这个新的列表,它是sum_列表的一个成员,并用一个元素初始化它。它不会比Chris在评论中说的更简单:[[sumx]代表x中的x]
您的代码不起作用,因为您没有在“主”列表中分配求和结果。按照您的示例X[z]=[sumX[z]]应该可以工作,而不仅仅是sumX[z]。如果您正在寻找不同的答案,建议使用@green的答案 x=[[0],[4,5,6],[1],[4],[3,4]] y=[] 对于x中的每个_列表: 元素列表的总和=[] 元素之和=0; 对于每个列表中的每个元素: 元素之和+=每个元素; 元素之和列表。元素之和 y、 附录元素列表的总和
您可以通过使用functools中的reduce函数来实现这一点
from functools import reduce
print([[reduce(lambda i,j: i+j, k)] for k in X])
[[sumx]对于x中的x]它为什么会起作用?你对总和什么都不做。为什么还要费心测试长度呢?和这个一样