如何打印包含单独的列表总和的列表

时间:2018-11-12 15:04:19

标签: python list loops iteration

我正在尝试获取列表清单的总和,其中下面定义的列表的输出为[6,2,10]。

SELECT  e.id` AS id, e.first_name AS first_name,
        u.initials AS assigned_coach,
        e.gender AS gender, e.email AS email, e.phone AS phone,
        e.age AS age, e.version AS version,
        e.evaluation_status AS evaluation_status,
        e.ip_address AS ip_address, e.date_created AS date_created,
        e.date_updated AS date_updated
    FROM  evaluation_client AS e
    LEFT JOIN  cx_user AS u  ON e.cx_hc_user_id = u.id
    ORDER BY  e.id ASC
    LIMIT  :APL0 OFFSET, :APL1

但是,此程序的结果为[6,8,18]。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

使用list comprehension

列表中的每个元素都是iterable,因此,sum是完成此任务的最佳选择。

>>> data = [[1,2,3], [2], [1, 2, 3, 4]]
>>> [sum(d) for d in data]
[6, 2, 10]

现在,如果您想知道问题出在哪里...

data 循环后放置 accumulator ,并在每个 row 循环后填充列表

>>> data = [[1,2,3], [2], [1, 2, 3, 4]]
>>> output = []
>>> for row in data:
...     total = 0
...     for val in row[0:len(row)]:
...         total += val
...     output.append(total)
...
>>> output
[6, 2, 10]

答案 1 :(得分:1)

使用map()

data = [[1,2,3], [2], [1, 2, 3, 4]] 
print(list(map(sum, data)))
# [6, 2, 10]

或列表理解:

data = [[1,2,3], [2], [1, 2, 3, 4]]
print([sum(x) for x in data])
# [6, 2, 10]