Modul Koleksi Python: Tipe Kontainer Tingkat Lanjut
Belajar menggunakan modul koleksi Python. Master Counter, defaultdict, nametuple, deque, dan cara menyederhanakan struktur data yang kompleks.
Ikhtisar
Meskipun container dasar Python—daftar, kamus, set, dan tupel—cukup untuk sebagian besar tugas, program yang kompleks sering kali memerlukan struktur data khusus. Untuk mengatasi hal ini, Python menyediakan modul `koleksi` bawaan. Modul ini berisi tipe data kontainer berkinerja tinggi yang dirancang untuk menyelesaikan tugas pemrograman umum secara lebih efisien dan dengan sintaksis yang lebih bersih dan terdokumentasi sendiri.
Di antara kelas-kelas yang paling berguna adalah `defaultdict`, yang bertindak seperti kamus normal tetapi secara otomatis menginisialisasi kunci yang hilang dengan nilai default (seperti daftar kosong atau bilangan bulat nol), sehingga menghilangkan kebutuhan akan pemeriksaan kunci yang panjang lebar. Pembangkit tenaga listrik lainnya adalah kelas `Counter`, yang secara khusus dioptimalkan untuk menghitung kemunculan item dalam sebuah iterable. Untuk antrian dan tumpukan yang cepat, `deque` (antrian berujung ganda) menawarkan `O(1)` penyisipan dan penghapusan di kedua ujungnya, tidak seperti daftar yang mengalami pergeseran `O(N)`.
Terakhir, modul ini menawarkan `namedtuple`, yang membuat objek ringan seperti tupel yang dapat diakses menggunakan notasi titik serta indeks tradisional (misalnya, `point.x`, bukan `point[0]`). Ini memberi Anda kecepatan dan kekekalan tupel dengan keterbacaan suatu kelas. Memasukkan modul koleksi ke dalam alur kerja Anda menjamin bahwa kode Anda tetap elegan, berperforma tinggi, dan bersih.
Kode & Output Eksekusi
Menghitung kata menggunakan Counter dan mengatur grup kamus dengan defaultdict.
from collections import Counter, defaultdict, namedtuple
# 1. Counter: Tallying items
votes = ["yes", "no", "yes", "yes", "no"]
vote_counts = Counter(votes)
print(f"Vote Counts: {vote_counts}")
print(f"Most common: {vote_counts.most_common(1)}")
# 2. defaultdict: Grouping values
grouped_data = defaultdict(list)
grouped_data["engineers"].append("Alice")
grouped_data["engineers"].append("Bob")
print(f"Grouped Data: {dict(grouped_data)}")
# 3. namedtuple: Clean records
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"Point x: {p.x}, Point y: {p.y}")Vote Counts: Counter({'yes': 3, 'no': 2})
Most common: [('yes', 3)]
Grouped Data: {'engineers': ['Alice', 'Bob']}
Point x: 10, Point y: 20Implementasi Langkah demi Langkah
- Menganalisis file log untuk menghitung kejadian kesalahan melalui Counter
- Membangun antrian prioritas atau penjadwal tugas menggunakan deque
- Mewakili dimensi koordinat atau catatan data menggunakan bernamatuple
Pertanyaan yang Sering Diajukan
Mengapa deque lebih cepat daripada list untuk operasi antrian?
Daftar memerlukan perpindahan semua elemen berikutnya dalam memori saat menyisipkan atau menghapus dari depan (O(N)). Deque diimplementasikan sebagai daftar tertaut ganda, memungkinkan operasi O(1) di kedua ujungnya.
Bisakah saya mengubah elemen dari tupel bernama?
Tidak. Karena tupel bernama mewarisi tupel standar, tupel tersebut sepenuhnya tidak dapat diubah. Anda harus menggunakan metode ._replace() untuk mengembalikan instance baru yang telah dimodifikasi.
Topik Terkait
Pelajari segala sesuatu tentang daftar Python. Temukan cara membuat, mengiris, memodifikasi, dan melakukan iterasi melalui array dengan Python secara asli.
Kamus PythonKamus Master Python. Pelajari cara menyimpan, mengambil, dan menangani data pasangan nilai kunci. Memahami kinerja dan praktik terbaik untuk pemetaan.
Python ItertoolsPelajari modul itertools Python. Kuasai iterator tak terbatas, kombinasi, permutasi, pengelompokan, dan pemrosesan data hemat memori.
Sumber Daya Python yang Direkomendasikan
Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.
Cara Mengurutkan Daftar dengan Python
Pelajari cara mengurutkan daftar dengan Python menggunakan metode sortir() dan fungsi sortir(). Temukan contoh pengurutan kunci khusus dan urutan terbalik.
Lembar
Panduan referensi lengkap untuk manipulasi string Python. Kuasai pemformatan, pencarian, pemisahan, penggantian, dan pemeriksaan properti string.
Python vs JavaScript: Bahasa Pemrograman Mana yang Terbaik?
Perbandingan komprehensif antara Python dan JavaScript. Jelajahi perbedaan sintaksis, kinerja, kasus penggunaan (backend vs frontend), dan contoh pengkodean.