Wpis z mikrobloga

@yras8:
Przeczytawszy dokumentację i chwilę eksperymentując z sum można wydedukować jak działa.

sum(iterable, /, start=0)

Sums start and the items of an iterable from left to right and returns the total. The iterable’s items are normally numbers, and the start value is not allowed to be a string.


Zatem drugi argument jest wartością początkową do której dodawane są kolejne elementy iterowalnego obiektu.

Mówiąć prosto sum robi coś takiego:

start = []
@yras8: sum() sumuje argumenty polecenia. Mamy tutaj 3 argumenty:
1: [1, 2]
2: [3, 4]
3: [] (pusta lista)

Druga sprawa - python pozwala na łączenie list porzez ich.. "dodawanie" znakiem plusa - to tworzy nową listę, która zawiera wszystkie elementy, które zostały "dodane". Dzięki temu sum() połączył wszystkie listy z argumentów. Trzeci argument był pustą listą, zatem jest pomijany.
Nie mogłem edytować swojego komentarza ale jeszcze doprecyzowanie:

Gdybyś spróbował wywołać sum([[1, 2], [3, 4]])
dostałbyś błąd TypeError bo sum próbowałby wykonać:

start=0
start+=[1, 2] # Nie wolno dodawać inta z listą
@FantaZy: Warto tutaj dodać, że za takie zachowanie listy odpowiedzialna jest implementacja __add__ i __iadd__. Dodając dwie listy do siebie, tak naprawdę python wykonuje:

list_a.extend(list_b)
co się sprowadza do:

list_a[len(list_a):] = list_b.

Przy czym __iadd__ wywoływanie jest przy in place assignment, czyli list_a +=list_b.