Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
0 beğenilme 0 beğenilmeme
579 kez görüntülendi

Bir for döngüsü ile yapılabilir ama tek satırlık bir yol var mı?

# Girdi
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
# Beklenen çıktı
[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

Veri Bilimi kategorisinde (1.8k puan) tarafından  | 579 kez görüntülendi

3 Cevaplar

1 beğenilme 0 beğenilmeme

Altlistelerden elemanları tek tek almadan da yapabiliriz.

liste = []

for altliste in l:
    liste += altliste
(3.7k puan) tarafından 
1 beğenilme 0 beğenilmeme

Bu cevap pythonik olmamakla beraber soyle bir cozum var

a = [[1,2], [3,4], [5,6]]
sum(a,[])

sum fonksiyonunun ikinci argumani toplamaya hangi degerden baslayacagimizi verir. Python da listelerin toplamasi yeni bir listedir.

(1.6k puan) tarafından 
0 beğenilme 0 beğenilmeme

Liste içerisinde iterasyonla (list comprehension):

liste = [girdi for altliste in l for girdi in altliste]

Bu aşağıdaki döngü kodunun daha verimlisidir:

liste = []
for altliste in l:
    for girdi in altliste:
        liste.append(girdi)

 

(1.8k puan) tarafından 
20,280 soru
21,812 cevap
73,492 yorum
2,476,982 kullanıcı