Tổng / Trung bình một thuộc tính của danh sách các đối tượng


82

Giả sử tôi có lớp Ccó thuộc tính a.

Cách tốt nhất để lấy tổng atừ danh sách Ctrong Python là gì?


Tôi đã thử mã sau, nhưng tôi biết đó không phải là cách đúng để làm điều đó:

for c in c_list:
    total += c.a

Câu trả lời:


182

Sử dụng biểu thức trình tạo :

sum(c.a for c in c_list)

Tôi thích sự đơn giản, nhưng có vẻ như mất một nửa thời gian miễn là (c1.A + c2.A + c3.A) cho khoảng 10 phần tử trong đó cA là một số thực.
jcomeau_ictx

9

Nếu bạn đang tìm kiếm các thước đo khác ngoài tổng, ví dụ: trung bình / độ lệch chuẩn, bạn có thể sử dụng NumPy và thực hiện:

mean = np.mean([c.a for c in c_list])
sd = np.std([c.a for c in c_list])

4

Tôi đã có một nhiệm vụ tương tự, nhưng tôi liên quan đến việc tổng hợp khoảng thời gian làm thuộc tính của bạn c.a. Kết hợp câu hỏi này với một câu hỏi khác được hỏi ở đây , tôi đã nghĩ ra

sum((c.a for c in cList), timedelta())

Bởi vì, như đã đề cập trong liên kết, sumcần một giá trị bắt đầu.


0

Sử dụng statisticsmô-đun tích hợp:

import statistics

statistics.mean((o.val for o in my_objs))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.