set

Laporkan masalah Lihat sumber Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Jenis set bawaan. Set adalah kumpulan nilai unik yang dapat diubah dan dapat diiterasi – elemen set. Nama jenis set adalah "set".

Set menyediakan operasi waktu konstan untuk menyisipkan, menghapus, atau memeriksa keberadaan nilai. Set diimplementasikan menggunakan tabel hash, dan oleh karena itu, seperti kunci kamus, elemen set harus dapat di-hash. Nilai dapat digunakan sebagai elemen set jika dan hanya jika nilai tersebut dapat digunakan sebagai kunci kamus.

Set dapat dibuat menggunakan fungsi bawaan set(), yang menampilkan set baru yang berisi elemen unik dari argumen opsionalnya, yang harus berupa iterable. Memanggil set() tanpa argumen akan membuat set kosong. Set tidak memiliki sintaksis literal.

Operasi in dan not in memeriksa apakah suatu nilai ada (atau tidak ada) dalam kumpulan:

s = set(["a", "b", "c"])
"a" in s  # True
"z" in s  # False

Set dapat diiterasi, sehingga dapat digunakan sebagai operand loop for, pemahaman daftar, dan berbagai fungsi bawaan yang beroperasi pada iterable. Panjangnya dapat diambil menggunakan fungsi bawaan len(), dan urutan iterasi adalah urutan saat elemen pertama kali ditambahkan ke set:

s = set(["z", "y", "z", "y"])
len(s)       # prints 2
s.add("x")
len(s)       # prints 3
for e in s:
    print e  # prints "z", "y", "x"

Set yang digunakan dalam konteks Boolean bernilai benar jika dan hanya jika tidak kosong.

s = set()
"non-empty" if s else "empty"  # "empty"
t = set(["x", "y"])
"non-empty" if t else "empty"  # "non-empty"

Set dapat dibandingkan untuk kesetaraan atau ketidaksetaraan menggunakan == dan !=. Kumpulan s sama dengan t jika dan hanya jika t adalah kumpulan yang berisi elemen yang sama; urutan iterasi tidak signifikan. Secara khusus, set tidak sama dengan daftar elemennya. Set tidak diurutkan berdasarkan set lainnya, dan upaya untuk membandingkan dua set menggunakan <, <=, >, >=, atau untuk mengurutkan urutan set, akan gagal.

set() == set()              # True
set() != []                 # True
set([1, 2]) == set([2, 1])  # True
set([1, 2]) != [1, 2]       # True

Operasi | pada dua set menampilkan gabungan dari kedua set tersebut: set yang berisi elemen yang ditemukan di salah satu atau kedua set asli.

set([1, 2]) | set([3, 2])  # set([1, 2, 3])

Operasi & pada dua set menampilkan persimpangan kedua set: set yang hanya berisi elemen yang ditemukan di kedua set asli.

set([1, 2]) & set([2, 3])  # set([2])
set([1, 2]) & set([3, 4])  # set()

Operasi - pada dua set menampilkan perbedaan kedua set: set yang berisi elemen yang ditemukan di set sisi kiri, tetapi tidak di set sisi kanan.

set([1, 2]) - set([2, 3])  # set([1])
set([1, 2]) - set([3, 4])  # set([1, 2])

Operasi ^ pada dua set menampilkan selisih simetris dari kedua set: set yang berisi elemen yang ditemukan tepat di salah satu dari dua set asli, tetapi tidak di keduanya.

set([1, 2]) ^ set([2, 3])  # set([1, 3])
set([1, 2]) ^ set([3, 4])  # set([1, 2, 3, 4])

Dalam setiap operasi di atas, elemen set yang dihasilkan mempertahankan urutannya dari dua set operand, dengan semua elemen yang diambil dari sisi kiri diurutkan sebelum elemen yang hanya ada di sisi kanan.

Penugasan yang ditingkatkan yang sesuai, |=, &=, -=, dan ^=, mengubah set sebelah kiri di tempatnya.

s = set([1, 2])
s |= set([2, 3, 4])     # s now equals set([1, 2, 3, 4])
s &= set([0, 1, 2, 3])  # s now equals set([1, 2, 3])
s -= set([0, 1])        # s now equals set([2, 3])
s ^= set([3, 4])        # s now equals set([2, 4])

Seperti semua nilai yang dapat diubah di Starlark, set dapat dibekukan, dan setelah dibekukan, semua operasi berikutnya yang mencoba memperbaruinya akan gagal.

Anggota

tambahkan

None set.add(element)

Menambahkan elemen ke set.

Anda dapat add nilai yang sudah ada dalam set; hal ini tidak akan mengubah set.

Jika Anda perlu menambahkan beberapa elemen ke set, lihat update atau operasi penetapan yang di-augment |=.

Parameter

Parameter Deskripsi
element wajib
Elemen yang akan ditambahkan.

hapus

None set.clear()

Menghapus semua elemen set.

selisih

set set.difference(*others)

Menampilkan set yang dapat diubah baru yang berisi selisih set ini dengan set lainnya.

Jika s dan t adalah set, s.difference(t) setara dengan s - t; namun, perhatikan bahwa operasi - mengharuskan kedua sisi berupa set, sedangkan metode difference juga menerima urutan dan dict.

difference dapat dipanggil tanpa argumen apa pun; hal ini akan menampilkan salinan set.

Misalnya,

set([1, 2, 3]).difference([2])             # set([1, 3])
set([1, 2, 3]).difference([0, 1], [3, 4])  # set([2])

Parameter

Parameter Deskripsi
others wajib
Set, urutan elemen yang dapat di-hash, atau dict.

difference_update

None set.difference_update(*others)

Menghapus elemen apa pun yang ditemukan di elemen lain dari set ini.

Jika s dan t adalah set, s.difference_update(t) setara dengan s -= t; namun, perhatikan bahwa penetapan tambahan -= memerlukan kedua sisi berupa set, sedangkan metode difference_update juga menerima urutan dan dict.

Anda dapat memanggil difference_update tanpa argumen; hal ini membuat set tidak berubah.

Misalnya,

s = set([1, 2, 3, 4])
s.difference_update([2])             # None; s is set([1, 3, 4])
s.difference_update([0, 1], [4, 5])  # None; s is set([3])

Parameter

Parameter Deskripsi
others wajib
Set, urutan elemen yang dapat di-hash, atau dict.

hapus

None set.discard(element)

Menghapus elemen dari set jika ada.

Nilai yang tidak ada dalam set boleh discard; hal ini tidak mengubah set. Jika Anda ingin gagal saat mencoba menghapus elemen yang tidak ada, gunakan remove. Jika Anda perlu menghapus beberapa elemen dari set, lihat difference_update atau operasi penetapan yang di-augment -=.

Misalnya,

s = set(["x", "y"])
s.discard("y")  # None; s == set(["x"])
s.discard("y")  # None; s == set(["x"])

Parameter

Parameter Deskripsi
element wajib
Elemen yang akan dihapus. Harus dapat di-hash.

irisan

set set.intersection(*others)

Menampilkan set yang dapat diubah baru yang berisi persimpangan set ini dengan set lainnya.

Jika s dan t adalah set, s.intersection(t) setara dengan s & t; namun, perhatikan bahwa operasi & mengharuskan kedua sisi berupa set, sedangkan metode intersection juga menerima urutan dan dict.

intersection dapat dipanggil tanpa argumen apa pun; hal ini akan menampilkan salinan set.

Misalnya,

set([1, 2]).intersection([2, 3])             # set([2])
set([1, 2, 3]).intersection([0, 1], [1, 2])  # set([1])

Parameter

Parameter Deskripsi
others wajib
Set, urutan elemen yang dapat di-hash, atau dict.

intersection_update

None set.intersection_update(*others)

Menghapus elemen yang tidak ditemukan di semua elemen lainnya dari set ini.

Jika s dan t adalah set, s.intersection_update(t) setara dengan s &= t; namun, perhatikan bahwa penetapan augmented &= mengharuskan kedua sisi berupa set, sedangkan metode intersection_update juga menerima urutan dan dict.

Anda dapat memanggil intersection_update tanpa argumen; hal ini membuat set tidak berubah.

Misalnya,

s = set([1, 2, 3, 4])
s.intersection_update([0, 1, 2])       # None; s is set([1, 2])
s.intersection_update([0, 1], [1, 2])  # None; s is set([1])

Parameter

Parameter Deskripsi
others wajib
Set, urutan elemen yang dapat di-hash, atau dict.

isdisjoint

bool set.isdisjoint(other)

Menampilkan benar (true) jika set ini tidak memiliki elemen yang sama dengan set lain.

Misalnya,

set([1, 2]).isdisjoint([3, 4])  # True
set().isdisjoint(set())         # True
set([1, 2]).isdisjoint([2, 3])  # False

Parameter

Parameter Deskripsi
other wajib
Set, urutan elemen yang dapat di-hash, atau dict.

issubset

bool set.issubset(other)

Menampilkan benar jika set ini adalah subset dari set lainnya.

Perhatikan bahwa set selalu dianggap sebagai subset dari dirinya sendiri.

Misalnya,

set([1, 2]).issubset([1, 2, 3])  # True
set([1, 2]).issubset([1, 2])     # True
set([1, 2]).issubset([2, 3])     # False

Parameter

Parameter Deskripsi
other wajib
Set, urutan elemen yang dapat di-hash, atau dict.

issuperset

bool set.issuperset(other)

Menampilkan benar (true) jika set ini adalah superset dari set lainnya.

Perhatikan bahwa himpunan selalu dianggap sebagai superset dari dirinya sendiri.

Misalnya,

set([1, 2, 3]).issuperset([1, 2])     # True
set([1, 2, 3]).issuperset([1, 2, 3])  # True
set([1, 2, 3]).issuperset([2, 3, 4])  # False

Parameter

Parameter Deskripsi
other wajib
Set, urutan elemen yang dapat di-hash, atau dict.

pop

unknown set.pop()

Menghapus dan menampilkan elemen pertama set (dalam urutan iterasi, yaitu urutan saat elemen pertama kali ditambahkan ke set).

Gagal jika set kosong.

Misalnya,

s = set([3, 1, 2])
s.pop()  # 3; s == set([1, 2])
s.pop()  # 1; s == set([2])
s.pop()  # 2; s == set()
s.pop()  # error: empty set

hapus

None set.remove(element)

Menghapus elemen, yang harus ada dalam set, dari set.

remove akan gagal jika elemen tidak ada dalam set. Jika Anda tidak ingin gagal saat mencoba menghapus elemen yang tidak ada, gunakan discard. Jika Anda perlu menghapus beberapa elemen dari set, lihat difference_update atau operasi penetapan yang di-augmentasi -=.

Parameter

Parameter Deskripsi
element wajib
Elemen yang akan dihapus. Harus berupa elemen set (dan dapat di-hash).

symmetric_difference

set set.symmetric_difference(other)

Menampilkan set yang dapat diubah baru yang berisi selisih simetris dari set ini dengan set, urutan, atau dict lain.

Jika s dan t adalah set, s.symmetric_difference(t) setara dengan s ^ t; namun, perhatikan bahwa operasi ^ mengharuskan kedua sisi berupa set, sedangkan metode symmetric_difference juga menerima urutan atau dict.

Misalnya,

set([1, 2]).symmetric_difference([2, 3])  # set([1, 3])

Parameter

Parameter Deskripsi
other wajib
Set, urutan elemen yang dapat di-hash, atau dict.

symmetric_difference_update

None set.symmetric_difference_update(other)

Menampilkan set yang dapat diubah baru yang berisi selisih simetris dari set ini dengan set, urutan, atau dict lain.

Jika s dan t adalah set, s.symmetric_difference_update(t) setara dengan penetapan yang ditambah `s ^= t; however, note that the ^=` memerlukan kedua sisi berupa set, sedangkan metode symmetric_difference_update juga menerima urutan atau dict.

Misalnya,

s = set([1, 2])
s.symmetric_difference_update([2, 3])  # None; s == set([1, 3])

Parameter

Parameter Deskripsi
other wajib
Set, urutan elemen yang dapat di-hash, atau dict.

Union

set set.union(*others)

Menampilkan set yang dapat diubah baru yang berisi gabungan set ini dengan set lainnya.

Jika s dan t adalah set, s.union(t) setara dengan s | t; namun, perhatikan bahwa operasi | mengharuskan kedua sisi berupa set, sedangkan metode union juga menerima urutan dan dict.

union dapat dipanggil tanpa argumen; hal ini akan menampilkan salinan set.

Misalnya,

set([1, 2]).union([2, 3])                    # set([1, 2, 3])
set([1, 2]).union([2, 3], {3: "a", 4: "b"})  # set([1, 2, 3, 4])

Parameter

Parameter Deskripsi
others wajib
Set, urutan elemen yang dapat di-hash, atau dict.

update

None set.update(*others)

Menambahkan elemen yang ditemukan di set lain ke set ini.

Misalnya,

s = set()
s.update([1, 2])          # None; s is set([1, 2])
s.update([2, 3], [3, 4])  # None; s is set([1, 2, 3, 4])

Jika s dan t adalah set, s.update(t) setara dengan s |= t; namun, perhatikan bahwa penetapan augmented |= memerlukan kedua sisi berupa set, sedangkan metode update juga menerima urutan dan dict.

Anda dapat memanggil update tanpa argumen apa pun; hal ini tidak akan mengubah set.

Parameter

Parameter Deskripsi
others wajib
Set, urutan elemen yang dapat di-hash, atau dict.