Извините, если название озадачивает, я не знаю, как правильно сформулировать эту проблему.
Я довольно новичок в программировании за пределами классовых проектов / работ, и я пытаюсь разработатьхорошие привычки программирования, и избегайте циклов, где я могу (т.е. держаться подальше от неэффективного кода).Проект, над которым я работаю, включает получение списка сумм атрибута ith из списка объектов, и мне удалось что-то сделать с помощью карт, но мне интересно, есть ли лучший способ сделать это.
Скажем, я работаю с классом Foo
, с n атрибутами, a1
, a2
, ..., an
, всеми целыми числами и списком l
, содержащим m из этих объектов.
Например, для n = 3
у нас может быть что-то вроде:
l = [Foo(a1 = 1, a2 = 2, a3 = 3), Foo(a1 = 1, a2 = 2, a3 = 3), Foo(a1 = 1, a2 = 2, a3 = 3)]
Я хочу, чтобы мой результат выглядел следующим образом:
sums = [3, 6, 9]
Я сделал это так:
sums = [sum([x.a1 for x in l]),
sum([x.a2 for x in l]),
sum([x.a3 for x in l])]
Теперь проблема в том, что если Foo
имеет много атрибутов, то ввод каждого x.an
может оказаться невозможным.К атрибутам необязательно также присоединено целое число, поэтому они могут быть такими, как Foo(these, are, some, attributes)
.
Итак, мой вопрос: каков «умный» способ решения этой проблемы?Включает ли это использование цикла?Спасибо.