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]它为什么会起作用?你对总和什么都不做。为什么还要费心测试长度呢?和这个一样