Lompati ke konten utama
Modul 3 · Pelajaran 4 dari 412/36 dalam kursus~10 min
Pelajaran modul (4/4)

Set

set adalah kumpulan elemen unik yang tidak berurutan. Tiga negara adidaya:

  1. Deduplikasi otomatis: menambahkan elemen yang sama dua kali tidak akan berpengaruh.
  2. Uji keanggotaan O(1): x in s sangat cepat bahkan dengan jutaan elemen (berbasis hash, seperti dicts).
  3. Operasi himpunan: gabungan, perpotongan, selisih, selisih simetris.

Membuat satu set

Python
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

Python
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 KeyError

Tetapkan operasi

Python
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

Python
parole = {"ciao", "mondo", "python"}
"ciao" in parole       # True   O(1)
"java" not in parole   # True

Sebagai 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

Latihan#python.m3.l4.e1
Upaya: 0Memuat…

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`.

Memuat editor…
Tunjukkan petunjuk

set(nums) menghapus duplikat.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#python.m3.l4.e2
Upaya: 0Memuat…

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)`.

Memuat editor…
Tunjukkan petunjuk

& persimpangan, - perbedaan.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#python.m3.l4.e3
Upaya: 0Memuat…

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.

Memuat editor…
Tunjukkan petunjuk

Anda dapat menggunakan operator & atau metode set_a.intersection(set_b).

Solusi tersedia setelah 3 upaya