我正在尝试获取列表清单的总和,其中下面定义的列表的输出为[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]。 任何帮助将不胜感激。
答案 0 :(得分:2)
列表中的每个元素都是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]