Merhaba, hoş geldiniz.
Öncelikle, kodları resim olarak değil de, kod görünümünde paylaşırsanız daha iyi olur.
Sorunuza geçecek olursak:
def düz_liste_yap(liste):
if not isinstance(liste, list):
return [liste]
elif not liste:
return []
else:
return düz_liste_yap(liste[0]) + düz_liste_yap(liste[1:])
l = [[1, 2], [3, 4]]
print(düz_liste_yap(l))
Yukarıdaki kodların nasıl çalıştığını açıklamaya çalışayım:
-
düz_liste_yap(l)
ile fonksiyonu,liste
parametresil
olacak şekilde çağırdık. -
l
’nin tipi liste olduğu içinelse
satırına gidildi. -
liste
’nin0
. indeksinde yer alan değer[1, 2]
. Bu değerdüz_liste_yap
fonksiyonuna argüman olarak verildi ve fonksiyon tekrar çağrıldı.düz_liste_yap(liste[1:])
ifadesi için ise dördüncü maddeye bakın.[1, 2]
bir liste olduğu için, yineelse
durumuna gidildi. Bu listenin0
. indeksinde yer alan değer1
. Bu değer bir liste değil. O halde değer[1]
şeklinde geri dönecek.[1, 2]
listesinin ilk elemanı hariç geri kalan elemanları dadüz_liste_yap
fonksiyonuna parametre olarak verilmişti. O halde liste şuna benzeyecek[2]
. Bu da bir liste olduğu için,else
satırına gidilir. Bu listenin0
. indeksinde yer alan sayı2
. Ve bu değer bir sayı. O halde geri dönen değer[2]
olacak.2
’yi de çıkardığımızda, geri kalan şey boş bir liste, bu durumda dönen değer, boş bir liste olur. Şu ana kadar[1] + [2] + []
geri döndü.
-
+
operatörünün sağında yer alan ifade şuydu:düz_liste_yap(liste[1:])
. Buradakiliste[1:]
ifadesinin değeri[3, 4]
. Ve 3. madde’nin alt maddesinde anlattığım aşamaların hepsi bu değerler için de tekrarlanır.
Ve sonuç olarak şöyle bir sonuç elde edersiniz.
[1] + [2] + [] + [3] + [4] + []
. Bu da [1, 2, 3, 4]
listesine eşittir.