Есть много способов выполнить одну и ту же задачу в python, но есть предпочтительный способ. Чтобы ваш код был pythonic, он должен соответствовать zen of python (PEP20).

import this

Настройка:

Давайте рассмотрим три различных способа суммирования векторов (вектор — это список чисел с плавающей запятой):

vectors = [[1.5, 2.5, 3.5],
           [3.5, 4.5, 5.5],
           [5.5, 6.5, 7.5],
           [7.5, 8.5, 9.5]]

Примечание: векторы имеют одинаковую длину.

Питоновский способ:

[sum(vector[i]
        for vector in vectors)
        for i in range(len(vectors[0]))]    # -> [18.0, 22.0, 26.0]

Этот способ использует списки понимания. Это ясно и читабельно.

Не питонический способ:

res = []
for i in range(len(vectors[0]):
    temp = 0
    for vector in vectors:
        temp += vector[i]
    res.append(temp)
res    # -> [18.0, 22.0, 26.0]

Этот способ является явным, поскольку он использует циклы for. Но когда дело доходит до python, должен быть один и только один предпочтительный способ.

Функциональный способ:

from functools import reduce
list(map(sum, zip(*vectors)))    # -> [18.0, 22.0, 26.0]

Этот способ является неявным, поскольку функциональная строка кода имеет тенденцию быть декларативной.

Я надеюсь, что это дало вам широкое представление о различных способах выполнения одной и той же задачи. Более того, питонический путь не черный и не белый; например, непитоновский способ в какой-то степени является питоническим, но поскольку есть лучший способ (списки понимания), он занял второе место.