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,listeparametresilolacak şekilde çağırdık. -
l’nin tipi liste olduğu içinelsesatırına gidildi. -
liste’nin0. indeksinde yer alan değer[1, 2]. Bu değerdüz_liste_yapfonksiyonuna 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, yineelsedurumuna 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_yapfonksiyonuna parametre olarak verilmişti. O halde liste şuna benzeyecek[2]. Bu da bir liste olduğu için,elsesatı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.