Set python hapus vs buang
Anda akan menggunakan set. buang ketika Anda tidak peduli apakah elemen itu ada Show Jika bukan kesalahan untuk menghapus sesuatu yang tidak ada, maka gunakan Anda akan menggunakan set. hapus ketika Anda benar-benar peduli bahwa elemen itu ada Analogi. jika gubernur mengatakan “keluarkan Roger dari penjara. tapi Roger Dalam hal ini, Anda memiliki dua pilihan (1) Lihat Sebelum Anda Melompat (LBYL). periksa apakah elemen ada di
(2) Lebih Mudah Meminta Pengampunan daripada Izin (EAFP). hapus saja, _Setiap pilihan memiliki pro dan kontra. Jika elemen yang hilang jarang terjadi, maka opsi Buang dan Hapus kedua fungsi menghapus nilai tertentu dari kamus. Lalu pertanyaan utamanya adalah fungsi mana yang harus kita gunakan dan mengapa? Misalkan Anda memiliki satu set 1. s={‘Apple’,’Elephant’,’orange’} Jika kita ingin menghilangkan nilai tertentu menggunakan fungsi hapus dan nilai itu tidak ada di set maka itu akan menimbulkan kesalahan. Tetapi dalam kasus fungsi buang, jika nilai yang ingin kita hilangkan tidak ada di set, itu akan mencetak set apa adanya tidak akan menampilkan kesalahan apa pun Metode Set Python buang() - Contoh, Penjelasan, Runtime Tonton video ini di YouTube Berikut adalah contoh minimal di mana Anda menghapus elemen string set.discard(element)0 >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}_ SintaksisMari "selami" sintaks formal metode set.discard(element)1 set.discard(element)ArgumentData TypeExplanation set.discard(element)2objectElemen hashable yang akan dihapus dari set jika ada Mengembalikan Nilai set. membuang()Nilai pengembalian set.discard(element)_1 adalah set.discard(element)4 mengatur. buang() vs atur. menghapus()Metode set.discard(element)_1 mirip dengan metode set.discard(element)6. Kedua metode mengambil elemen untuk dihapus sebagai argumen dan menghapus elemen ini dari set tempat mereka dipanggil. Jika elemen yang akan dihapus ada di set, metode memiliki perilaku yang sama ? Hasilnya, tidak ada hal buruk yang terjadi jika Anda membuang elemen yang sama dua kali >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'} Namun, jika Anda menghapus elemen yang sama dua kali, Python memunculkan >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}1 segera setelah elemen tersebut bukan anggota himpunan lagi >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File " Dalam kebanyakan kasus, Anda tidak menginginkan perilaku ini, itulah sebabnya saya menyarankan Anda menggunakan metode >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}3 per default untuk menghapus elemen dari set daripada menerapkan logika coba/kecuali yang lebih rumit untuk menangani kesalahan Set Python Buang Beberapa ElemenFormulasi masalah. Diberikan satu set dan iterable elemen yang ingin Anda hapus dari set. Tetapi Anda tidak ingin Python memunculkan kesalahan jika elemen set tidak ada. Dengan kata lain, bagaimana cara membuang banyak elemen dari himpunan? ? . Metode ini menghapus semua elemen yang juga merupakan anggota himpunan. Jika tidak ada elemen yang menjadi anggota, metode tidak melakukan apa pun Berikut adalah contoh metode >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}5 untuk membuang beberapa elemen >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'} Saya menemukan metode ini lebih unggul daripada mengulang semua elemen yang akan dihapus karena lebih ringkas >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> for element in to_remove: s.discard(element) >>> s {2, 3, 'Carl'} Apa Kompleksitas Waktu himpunan. membuang()?Kompleksitas runtime dari fungsi set.discard(element)_1 pada set dengan n elemen adalah O(1). Jadi, metode set.discard(element)1 Python memiliki kompleksitas runtime yang konstan. Alasannya adalah keanggotaan set memiliki kompleksitas runtime yang konstan karena penerapan tabel hash—dan mengingat elemen yang dimaksud, kita dapat dengan mudah menghapusnya dari set tanpa melihat semua elemen di set Anda dapat melihat ini dalam percobaan sederhana berikut di mana kami menjalankan metode set beberapa kali untuk meningkatkan jumlah elemen set Angka. Waktu proses (sumbu y) tidak bergantung pada jumlah elemen set (sumbu x), jadiset.discard(element)1 memiliki kompleksitas waktu proses yang konstan Saya menjalankan percobaan ini di notebook Acer Aspire 5 saya (saya tahu) dengan prosesor Intel Core i7 (Gen ke-8) dan memori 16GB. Ini kode eksperimennya import matplotlib.pyplot as plt import time sizes = [i * 10**5 for i in range(50)] runtimes = [] for size in sizes: s = set(range(size)) # Start track time ... t1 = time.time() s.discard(size-99) t2 = time.time() # .. end track time runtimes.append(t2-t1) plt.plot(sizes, runtimes) plt.ylabel('Runtime (s)') plt.xlabel('Set Size') plt.show() Metode Set Python LainnyaSemua metode himpunan dipanggil pada himpunan tertentu. Misalnya, jika Anda membuat himpunan >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}9, Anda akan memanggil >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "0 untuk menghapus semua elemen himpunan. Kami menggunakan istilah "himpunan ini" untuk merujuk ke himpunan tempat metode dijalankan >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "1Tambahkan elemen ke set ini >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "2Hapus semua elemen dari set ini >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "3Buat dan kembalikan salinan datar dari set ini >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "4Buat dan kembalikan set baru yang berisi semua elemen set ini kecuali yang ada di argumen set yang diberikan. Himpunan yang dihasilkan memiliki elemen paling banyak seperti yang lainnya. >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "5Hapus semua elemen dari set ini yang merupakan anggota dari salah satu argumen set yang diberikan. >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "6Hapus elemen dari set ini jika itu adalah anggota, jika tidak, jangan lakukan apa pun. >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "7Membuat dan mengembalikan set baru yang berisi semua elemen yang merupakan anggota dari semua set. ini dan ditentukan juga. . >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "8Menghapus semua elemen dari set ini yang bukan anggota dari semua set lain yang ditentukan. >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove('Bob') >>> s.remove('Bob') Traceback (most recent call last): File "9Kembali >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}0 jika tidak ada elemen dari himpunan ini yang merupakan anggota dari himpunan tertentu lainnya. Himpunan-himpunan saling lepas jika dan hanya jika perpotongannya adalah himpunan kosong. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}1Kembali >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}0 jika semua elemen dari himpunan ini adalah anggota dari argumen himpunan yang ditentukan. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}3Kembali >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}0 jika semua elemen dari argumen himpunan yang ditentukan adalah anggota dari himpunan ini. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}5Hapus dan kembalikan elemen acak dari set ini. Jika set kosong, itu akan memunculkan >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}1. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}7Hapus dan kembalikan elemen tertentu dari set ini seperti yang didefinisikan dalam argumen. Jika set tidak mengandung elemen, itu akan memunculkan >>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard('Bob') >>> s.discard('Bob') >>> s {'Alice', 'Cloe'}1. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> s.difference_update(to_remove) >>> s {2, 3, 'Carl'}9Mengembalikan set baru dengan elemen baik di set ini atau argumen set yang ditentukan, tetapi bukan elemen yang merupakan anggota dari keduanya. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> for element in to_remove: s.discard(element) >>> s {2, 3, 'Carl'}0Ganti set ini dengan perbedaan simetris, i. e. , elemen dalam himpunan ini atau argumen himpunan yang ditentukan, tetapi bukan elemen yang merupakan anggota dari keduanya. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> for element in to_remove: s.discard(element) >>> s {2, 3, 'Carl'}1Buat dan kembalikan set baru dengan semua elemen yang ada di set ini, atau di salah satu argumen set yang ditentukan. >>> s = {1, 2, 3, 'Alice', 'Bob', 'Carl'} >>> to_remove = {1, 'Alice', 'Bob'} >>> for element in to_remove: s.discard(element) >>> s {2, 3, 'Carl'}2Perbarui set ini dengan semua elemen yang ada di set ini, atau di salah satu argumen set yang ditentukan. Himpunan yang dihasilkan setidaknya memiliki elemen sebanyak yang lainnya Chris Saat bekerja sebagai peneliti dalam sistem terdistribusi, Dr. Christian Mayer menemukan cintanya untuk mengajar siswa ilmu komputer Untuk membantu siswa mencapai tingkat kesuksesan Python yang lebih tinggi, dia mendirikan situs web pendidikan pemrograman Finxter. com. Dia adalah penulis buku pemrograman populer Python One-Liners (NoStarch 2020), rekan penulis seri Coffee Break Python dari buku yang diterbitkan sendiri, penggemar ilmu komputer, pekerja lepas, dan pemilik salah satu dari 10 blog Python terbesar di dunia Kesukaannya adalah menulis, membaca, dan coding. Tetapi hasrat terbesarnya adalah untuk melayani calon pembuat kode melalui Finxter dan membantu mereka meningkatkan keterampilan mereka. Anda dapat bergabung dengan akademi email gratisnya di sini |