Anda akan menggunakan set. buang ketika Anda tidak peduli apakah elemen itu ada
himpunan atau tidak. Pikirkan membuang sebagai "jika ada, hapus,
kalau tidak jangan ganggu aku”
Jika bukan kesalahan untuk menghapus sesuatu yang tidak ada, maka gunakan
membuang
Anda akan menggunakan set. hapus ketika Anda benar-benar peduli bahwa elemen itu ada
sebelum menghapusnya, atau jika merupakan kesalahan untuk mencoba menghapus sesuatu itu
tidak ada
Analogi. jika gubernur mengatakan “keluarkan Roger dari penjara. tapi Roger
tidak dapat ditemukan, maka ada masalah yang perlu ditangani
Dalam hal ini, Anda memiliki dua pilihan
[1] Lihat Sebelum Anda Melompat [LBYL]. periksa apakah elemen ada di
atur, dan jika demikian, hapus
if roger in prison:
prison.remove[roger]
[2] Lebih Mudah Meminta Pengampunan daripada Izin [EAFP]. hapus saja,
dan jika pengecualian terjadi, tangkap dan atasi [mungkin dengan
mengabaikannya]
try:
prison.remove[roger]
except KeyError:
pass
_Setiap pilihan memiliki pro dan kontra. Jika elemen yang hilang jarang terjadi, maka opsi
2 akan lebih cepat. Jika umum, maka opsi 1 akan lebih cepat. Jika
Anda menggunakan kode berulir atau pemrosesan paralel lainnya di mana lebih dari
satu bagian kode memiliki akses ke set, maka opsi 1 tidak aman dan
opsi 2 adalah yang Anda butuhkan. Kalau tidak, itu hanya masalah apa yang Anda
lebih suka
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 s={‘Apple’,’Elephant’,’orange’}
_ mari kita coba kedua fungsi tersebut
1. s={‘Apple’,’Elephant’,’orange’}
s.remove['Elephant']
print[s][out]>> {'Apple','orange'}2. s={‘Apple’,’Elephant’,’orange’}
s.remove['ele']
print[s][out]>> Traceback [most recent call last]:
File "./prog.py", line 3, in KeyError: 'ban'
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.discard[x]
Python menghapus elemen x
dari set ini jika itu adalah anggota. Kalau tidak, tidak apa-apa
Set Python buang[] - Contoh, Penjelasan, Runtime
Tonton video ini di YouTube
Berikut adalah contoh minimal di mana Anda menghapus elemen string 'Bob'
dari set melalui metode
set.discard[element]0
>>> s = {'Alice', 'Bob', 'Cloe'} >>> s.discard['Bob'] >>> s {'Alice', 'Cloe'}_
Sintaksis
Mari "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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'
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 Elemen
Formulasi 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
set.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 Lainnya
Semua 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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'1Tambahkan elemen ke set ini
>>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove['Bob'] >>> s.remove['Bob'] Traceback [most recent call last]: File "", line 1, in s.remove['Bob'] KeyError: 'Bob'2Hapus semua elemen dari set ini
>>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove['Bob'] >>> s.remove['Bob'] Traceback [most recent call last]: File "", line 1, in s.remove['Bob'] KeyError: 'Bob'3Buat dan kembalikan salinan datar dari set ini
>>> s = {'Alice', 'Bob', 'Cloe'} >>> s.remove['Bob'] >>> s.remove['Bob'] Traceback [most recent call last]: File "", line 1, in s.remove['Bob'] KeyError: 'Bob'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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'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 "", line 1, in s.remove['Bob'] KeyError: 'Bob'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