1- " Bu kodun type (i[0]) şeklinde bir indeks ile [0] yazılmış olmasının nedeni nedir acaba? "
Bir döngü oluşturulmak istenmiş ve döngünün göz önünde bulunduracağı i elemanları AB listesinin elemanları olarak belirlenmiş. AB listesi aslında listelerden oluşan başka bir liste olarak tanımlanmış. AB listesi A ve B listelerinin birleşiminden oluşturulmuş. Bu sebepten ötürü AB listesinin elemanları A ve B listeleri diyebiliriz. Dolayısı ile AB listesi üzerinde tanımlanan döngüde A ve B listeleri döngüden çıkacaktır. i[0]==str şartı ise AB listesinin elemanları olan A ve B listelerinin ilk elemanlarına ulaşıp bu elemanlar üzerinde tip sorgusu yapmak için yazılmış. Eğer sonuç TRUE olarak dönerse print(list(map(lambda x: x + " hi", i))) ifadesini döndürecektir.
2- " Neden map(fonc, liste) değilde map(fonc, i ) olarak girilmiş? "
Aslında ilk sorunuza verdiğim yanıtta da ifade ettiğim gibi "i" değeri AB listesinin elemanları olan A ve B listeleri olarak tanımlanmış ve döngü bu listeler üzerinde çalışıyor. Döngünün altındaki soru yukarıda açıkladığım gibi TRUE olarak sonuçlanırsa print fonksiyonunun akışı aşağıdaki gibi ilerliyor:
--- lambda x: x + " hi", i)
sorguyu True olarak döndüren AB listesinin elemanı olan listeyi yakala ve içerisindeki elemanlara selam ver
---- map(lambda x: x + " hi", i)
selam verme işlemini listedeki her eleman için sırayla uygula
---- list(map(lambda x: x + " hi", i))
selam verme işlemlerini senkronize olarak bir listeye ekle
----- print(list(map(lambda x: x + " hi", i)))
son olarak bana bu listeyi göster.
map(fonc, liste) değilde map(fonc, i ) olarak gösterilmesinin sebebi atanacak i değerinin zaten AB nin bir listesi olmasıdır ve i değerine hangi listeyi atayacağına dair bilgi ise, sorguya TRUE cevabını veren liste olarak belirlenmek istenmiştir.