Pelajaran modul (4/4)
Set
set adalah kumpulan elemen unik yang tidak berurutan. Tiga negara adidaya:
- Deduplikasi otomatis: menambahkan elemen yang sama dua kali tidak akan berpengaruh.
- Uji keanggotaan O(1):
x in ssangat cepat bahkan dengan jutaan elemen (berbasis hash, seperti dicts). - Operasi himpunan: gabungan, perpotongan, selisih, selisih simetris.
Membuat satu set
vuoto = set() # ATTENZIONE: {} è un dict vuoto, non un set!
numeri = {1, 2, 3}
da_lista = set([1, 1, 2, 3, 3, 3]) # {1, 2, 3}Tanda kurung kurawal saja {} membuat kamus kosong, bukan himpunan: untuk himpunan kosong
Anda membutuhkan set().
Memodifikasi satu set
s = {1, 2, 3}
s.add(4) # {1, 2, 3, 4}
s.add(1) # nessun effetto (già presente)
s.discard(99) # rimuove se presente, silenzioso altrimenti
s.remove(2) # rimuove o solleva KeyErrorTetapkan operasi
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
a | b # {1, 2, 3, 4, 5, 6} unione
a & b # {3, 4} intersezione
a - b # {1, 2} differenza (in a ma non in b)
a ^ b # {1, 2, 5, 6} differenza simmetrica (xor)Ada juga formulir metode (a.union(b), a.intersection(b),…) yang di
Selain itu, terima iterable apa pun, tidak hanya set.
Tes keanggotaan
parole = {"ciao", "mondo", "python"}
"ciao" in parole # True O(1)
"java" not in parole # TrueSebagai perbandingan: mencari dengan in di dalam list adalah O(n) dan panjang
daftar itu jauh lebih lambat.
Set beku: versi yang tidak dapat diubah
frozenset({1, 2, 3}) adalah versi hashable: dapat berupa kunci dict atau
elemen dari himpunan lain.
Tetapkan operasi dan kinerja
Kumpulan diimplementasikan sebagai tabel hash, yang membuat pengujian keanggotaan (x in my_set) menjadi sangat cepat: kumpulan ini berjalan dalam waktu yang konstan O(1), tidak seperti daftar yang pencariannya memerlukan waktu linier O(n). Selain itu, mereka mendukung operasi aljabar seperti gabungan (|), persimpangan (&), dan perbedaan (-).
Cobalah
Mengingat daftar `nums = [1, 2, 2, 3, 3, 3, 4]`, buat `unique_items` dengan nilai unik (dalam urutan apa pun) lalu hitung `count` sebagai len(unique_items). Evaluasi `hitungan`.
Tunjukkan petunjuk
set(nums) menghapus duplikat.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Diketahui `a = {1, 2, 3, 4}` dan `b = {3, 4, 5, 6}`, hitung perpotongannya menjadi `barang_umum` dan selisih a-b menjadi `satu-satunya_a`. Evaluasi tuple `(common_items, only_a)`.
Tunjukkan petunjuk
& persimpangan, - perbedaan.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Given two sets `set_a = {1, 2, 3}` and `set_b = {2, 3, 4}`, calculate the mathematical intersection of the two sets (their common elements). Store the resulting set in `common_elements` and evaluate it.
Tunjukkan petunjuk
Anda dapat menggunakan operator & atau metode set_a.intersection(set_b).
Solusi tersedia setelah 3 upaya