<jupyter_start><jupyter_text>SetSet adalah sebuah struktur data dalam Python yang **tidak terurut** (*unordered*), *immutable*, dan setiap elemennya unik. Oleh karena setiap elemen dalam `set` adalah unik, maka tidak ada duplikat di dalamny, meskipun kita "dengan sengaja" mendefinisikan `set` dengan nilai duplikat. Mendefinisikan Set dengan `{}`Cara pertama untuk mendefinisikan `set` adalah dengan mendaftarkan objek-objek yang memiliki nilai *hash* di dalam `{}` dan setiap elemennya dipisahkan dengan `,`.```{note}Nilai hash adalah nilai atau kode hasil dari enkripsi (fungsi) yang nilainya tidak akan berubah selamanya. Nilai hash, pada bidang ilmu komputer, digunakan untuk mengakses suatu data, yang memakan banyak memori, dengan efisien.Semua objek *immutable* dalam Python, yaitu angka, string, dan tuple, memiliki nilai *hash* yang berarti *hashable*. Sehingga, objek-objek tersebut bisa kita masukkan dalam `set` dan **objek selain itu tidak bisa** {cite}`pythondocs`.```Perhatikan contoh kode dan luarannya di bawah ini.<jupyter_code>set_is_unique = {1, 2, 3, 4, 4, 5, 1}  # akan menghasilkan {1, 2, 3, 4, 5}
string_in_set = {"Bob", "Michael", "Kevin", "Stuart", "Bob", "Stuart"}

print(set_is_unique, type(set_is_unique))
print(string_in_set, type(string_in_set))<jupyter_output>{1, 2, 3, 4, 5} <class 'set'>
{'Stuart', 'Kevin', 'Michael', 'Bob'} <class 'set'><jupyter_text>Tipe data `set` merepresentasikan arti sebenarnya, yaitu **himpunan**. Di matematika, kita mengenal ciri-ciri himpunan dan juga operasi yang melibatkan himpunan, seperti irisan, gabungan, dan lainnya.````{figure} ../../assets/images/set-illustration.png---name: set-illustration---Ilustrasi dari {cite}`lubanovic2019intropython2nd`````Untuk mendukung operasi tersebut, Python sudah menyediakan beberapa fungsi dan metode bawaan. Silakan baca dokumentasi Python [ini](https://docs.python.org/3.8/library/stdtypes.htmlset-types-set-frozenset). Mari kita coba implementasikan beberapa pada kuis berikut.````{admonition} EksplorasiMenggunakan fungsi dan metode bawaan untuk `set`, jawab/implementasikan soal di bawah ini:1. Definisikan 2 set menurut gambar di atas, dengan nama variabel `female_names` (kiri) dan `male_names` (kanan).2. Tampilkan 2 variabel tersebut dan jumlah masing-masing elemen.3. Buat variabel `all_names` yang berisikan semua nama gabungan dari `female_names` dan `male_names`.4. Buat variabel `female_male_names` yang memuat nama yang bisa termasuk dalam dua himpunan tersebut.5. Buat variabel `only_females` dan `only_males` yang memuat nama-nama dalam `female_names` yang tidak ada dalam `male_names` dan sebaliknya, secara beruturut-turut.````<jupyter_code># KETIK DI SINI<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10726133431625506, 'fraction_numerical': 0.01142646516771102, 'mean_word_length': 6.375, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 10, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '304832', 'license': 'MIT', 'n_tokens_mistral': 1107, 'n_tokens_neox': 1031, 'n_words': 303, 'path': 'book/python/data-structures/set.ipynb', 'repo_name': 'syahrulhamdani/bitlabs-webinar-2021', 'size': '2713'}