Как работает функция суммирования в питоне с циклом for - PullRequest
0 голосов
/ 31 декабря 2018

Я использовал функцию суммы в pyhton, и мне ясно о ее общей структуре сумма (повторяемая, начало) , но я не могу понять логику следующего кода

test = sum(5 for i in range(5) )
print("output:  ", test) 

output: 25

Пожалуйста, кто-нибудь может описать, что здесь происходит, в основном здесь 5 умножается на 5, и такой же шаблон есть для каждого входного сэмпла.

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

Ваш код сокращен для:

test = sum((5 for i in range(5)))

Удаление лишних скобок является синтаксическим сахаром: оно не влияет на ваш алгоритм.

Компонент (5 for i in range(5)) является выражение генератора , которое на каждой итерации выдает значение 5. Общее количество выражений генератора составляет 5 итераций, как определено range(5).Следовательно, выражение генератора дает 5 ровно 5 раз.

sum, как показывают документы, принимает любые повторяемые , даже те , а не полностью хранится в памяти.Генераторы и, по выражению генератора расширений, эффективны для памяти.Следовательно, ваша логика будет суммировать 5 ровно 5 раз, что равно 25.

Соглашение, когда вы не используете переменную в замкнутом цикле, состоит в том, чтобы обозначать эту переменную подчеркиванием (_), поэтому обычновы увидите код, написанный как:

test = sum(5 for _ in range(5))
0 голосов
/ 31 декабря 2018

По сути, это сумма 5 для каждого «я» в диапазоне (5).Это означает, что этот код эквивалентен n * 5, а n является размером диапазона (n).

0 голосов
/ 31 декабря 2018

Вы можете добавить список к функции sum, чтобы сделать что-то вроде этого:

test = sum((1,23,5,6,100))
print("output:  ", test) 

И вы получите 135.

Итак, с помощью цикла for вы получаете список и помещаете этот список в функцию sum, и вы получаете сумму списка.Реальная функция sum использует информацию о урожайности, использует каждое значение и суммирует их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...