Mengumpulkan Pokémon tanpa loop
Sebuah daftar berisi 720 Pokémon telah dimuat ke sesi Anda sebagai poke_names. Daftar lain yang berisi generasi masing-masing Pokémon telah dimuat sebagai poke_gens.
Sebuah for loop telah dibuat untuk memfilter Pokémon yang termasuk ke generasi satu atau dua, dan mengumpulkan jumlah huruf pada nama setiap Pokémon:
gen1_gen2_name_lengths_loop = []
for name,gen in zip(poke_names, poke_gens):
if gen < 3:
name_length = len(name)
poke_tuple = (name, name_length)
gen1_gen2_name_lengths_loop.append(poke_tuple)
Latihan ini adalah bagian dari kursus
Menulis Kode Python yang Efisien
Petunjuk latihan
Hilangkan for loop di atas dengan menggunakan list comprehension dan fungsi
map():- Gunakan list comprehension untuk mengumpulkan setiap Pokémon yang termasuk generasi 1 atau generasi 2. Simpan sebagai
gen1_gen2_pokemon. - Gunakan fungsi
map()untuk mengumpulkan jumlah huruf pada nama setiap Pokémon di dalam daftargen1_gen2_pokemon. Simpan map object ini sebagainame_lengths_map. - Gabungkan
gen1_gen2_pokemondanname_lengths_mapmenjadi sebuah daftar bernamagen1_gen2_name_lengths.
- Gunakan list comprehension untuk mengumpulkan setiap Pokémon yang termasuk generasi 1 atau generasi 2. Simpan sebagai
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Collect Pokémon that belong to generation 1 or generation 2
gen1_gen2_pokemon = [name for name,gen in ____(____, ____) if gen < ____]
# Create a map object that stores the name lengths
name_lengths_map = ____(len, ____)
# Combine gen1_gen2_pokemon and name_lengths_map into a list
gen1_gen2_name_lengths = [*____(____, ____)]
print(gen1_gen2_name_lengths_loop[:5])
print(gen1_gen2_name_lengths[:5])