Python - функция Sum () для списков символов - PullRequest
2 голосов
/ 08 октября 2019

Я запутался с приведенной ниже функцией sum:

sum([['a', 'b', 'c', 'd'], ['e']],[])

Код возвращает

['a', 'b', 'c', 'd', 'e']

Видимо, функция сглаживает список. Но как мне интерпретировать это использование функции sum, когда повторяемое не является числом, а аргумент start является пустым списком? Документация не объясняет этого.

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

Функция суммы здесь вызывает функцию

__iadd__(): 

, которая в основном является расширением

['a', 'b', 'c', 'd'].extend(['e'])

Это делается рекурсивно для массива с элементом [e] а затем для пустого массива [] Here is a screen shot of the answer Я надеюсь, что это устранит вашу путаницу.

__iadd__(): функция используется для реализации + операция
sum([['a', 'b', 'c', 'd'], ['e']],[])
эквивалентна
['a', 'b', 'c', 'd'] + ['e'] + [].
Последний аргумент [] необходим, потому что сумма предполагает, что он равен 0, и мы не можем добавлять списки и целые числа .

0 голосов
/ 08 октября 2019

Для списков в Python plus, или +, или __add__ перегружен для объединения списков.

Итак, все зависит от того, как __add__ определено для элементов итерируемого.

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