Ada ekspresi khusus dalam Python yang disebut derivasi . Fungsinya adalah mengambil struktur data sebagai masukan, lalu memfilter dan menghitungnya, dan terakhir mengeluarkan struktur data lainnya. Menurut struktur data yang berbeda, ini dapat dibagi menjadi pemahaman daftar, pemahaman kumpulan, dan pemahaman kamus. Pertama-tama mari kita fokus pada pemahaman daftar yang paling umum digunakan.
Pertama mari kita lihat format sintaksis pemahaman daftar:
listname=[ekspresi untuk variabel dalam objek (jika kondisi)]
listname: nama daftar yang baru dibuat.
ekspresi: ekspresi.
variabel: nama variabel.
(jika kondisi): digunakan untuk memilih daftar yang memenuhi persyaratan dari objek.
Kita mulai dari tiga aspek: daftar nilai dalam rentang tertentu, daftar kondisi tertentu, dan daftar yang terdiri dari elemen yang memenuhi kondisi.
Pertama-tama mari kita pikirkan kapan kita perlu membuat 10 angka dan menyimpannya dalam sebuah daftar. Pertama, mari kita lihat cara yang umum:
listname=[]foriinrange(10):listname.append(i)print(listname)
Outputnya adalah:
[0,1,2,3,4,5,6,7,8,9]
Menggunakan pemahaman daftar hanya membutuhkan satu baris:
namadaftar=[iforiinrange(10)]
Outputnya adalah:
[0,1,2,3,4,5,6,7,8,9]
Pendekatan ini menyederhanakan operasi kami saat mendefinisikan daftar.
Misalkan kita mengetahui bahwa suatu daftar adalah namadaftar = [1,3,5,6,7,9,10,23,26,28,64,98]. Kita ingin mencarinya dan menjumlahkan semua angka di dalamnya dengan 5. Cara yang biasa:
namadaftar=[1,3,5,6,7,9,10,23,26,28,64,98]foriinrange(len(nama daftar)):namadaftar[i]+=5print(nama daftar)
Outputnya adalah:
[6,8,10,11,12,14,15,28,31,33,69,103]
Menggunakan pemahaman daftar juga sangat ringkas:
namadaftar=[1,3,5,6,7,9,10,23,26,28,64,98]namadaftar=[i+5untuk namadaftar]
Keluaran:
[6,8,10,11,12,14,15,28,31,33,69,103]
Jenis pemahaman daftar ini lebih kompleks dibandingkan dua yang pertama, namun dapat menyederhanakan lebih banyak kode.
Mari kita ambil contoh untuk melihat format kode:
Diketahui suatu daftar adalah namadaftar = [8,33,53,64,73,95,101,123,126,164,198], maka kita perlu mencari angka-angka dalam daftar yang kurang dari dan lebih besar dari 100, kemudian dikalikan dengan 0,8, dan terakhir mengembalikannya ke daftar.
Jika kita menggunakan metode normal:
listname=[10,20,30,40,60,120,130,140,160,180,200]newlist=[]#Buat daftar baru untuk disimpan foriinrange(len(listname)):#Nilai indeks traversal iflistname[i]>100:#Temukan angka yang lebih besar dari 100 namadaftar[ i]*=0,8#Kalikan dengan 0,8 daftar baru.tambahkan(namadaftar[i])#Tambahkan ke daftar baru cetak(daftar baru)
Outputnya adalah:
[96.0,104.0,112.0,128.0,144.0,160.0]
Gunakan pemahaman daftar:
listname=[10,20,30,40,60,120,130,140,160,180,200]newlist=[i*0.8foriinlistnameifi>100]print(daftar baru)
Hasil keluaran:
[96.0,104.0,112.0,128.0,144.0,160.0]
Mari kita analisa berdasarkan struktur tata bahasa dari contoh ini:
Kita dapat menggunakan metode ini ketika menggunakan pemahaman daftar yang kompleks. Dapat dipahami bahwa pertama-tama kita memilih elemen yang memenuhi kondisi (pernyataan kondisional) dari objek, kemudian memproses ekspresi keluaran, dan terakhir menyimpannya dalam daftar, membentuk a daftar baru.
Berikut beberapa contoh pertanyaan yang dapat Anda coba.
1. Daftar [1,2,13,22,25], harap gunakan pemahaman daftar untuk mengekstrak bilangan yang lebih besar dari 10, mengkuadratkan setiap bilangan, dan terakhir menghasilkan keluaran.
Hasil yang berjalan adalah:
[169.484.625]
Kodenya seperti berikut, anda bisa mencoba melengkapi referensi jawabannya terlebih dahulu.
daftar=[1,2,13,22,25]daftar baru=[i*iforiinlistifi>10]cetak(daftar baru)
2. Gunakan pemahaman daftar untuk menemukan semua bilangan ganjil dalam daftar dan buat daftar baru, daftar= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Kodenya adalah sebagai berikut:
daftar=[1,2,3,4,5,6,7,8,9,10]daftar baru=[iforiinlistifi%2==1]cetak(daftar baru)
Outputnya adalah:
[1,3,5,7,9]