O przepraszam faktycznie "i" zaczyna od 1. Wydaje mi się że wiem jak działa funkcja range(). Tylko nie wiem dlaczego program działa kiedy do x nie jest na początku przypisana wartość a zmienna x jest wyliczana na podstawie poprzedniej wartości.
A gdzie tu x
jest, Twoim zdaniem, wyliczana na podstawie poprzedniej wartości???
map(lambda x: i * 10**x, range(i))
tu jest wyliczenie x na podstawie poprzedniego
lambda x: i * 10 ** x
wydaje mi się że to można zapisać tak :
x = i * 10 **x
Oczywiście, że nie można. :) Gdyby można było, to Twoja wersja by działała, a jak się łatwo przekonać -- nie działa. :)
lambda
oznacza definicję funkcji pomocniczej w locie. Więc Twój przykład
for i in range(1,int(input())):
print(list(map(lambda x: i * 10**x, range(i))))
można inaczej zapisać tak:
def funkcja_pomocnicza(x):
return i * 10**x
for i in range(1,int(input())):
print(list(map(funkcja_pomocnicza, range(i))))