Jenis set bawaan. Set adalah kumpulan nilai unik yang dapat diubah dan dapat di-iterasi – elemen set. Nama jenis set adalah "set"
.
Set menyediakan operasi waktu konstan untuk menyisipkan, menghapus, atau memeriksa keberadaan nilai. Set diimplementasikan menggunakan tabel hash, sehingga, seperti kunci kamus, elemen set harus dapat di-hash. Nilai dapat digunakan sebagai elemen set jika dan hanya jika 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 bersifat iterabel. Memanggil set()
tanpa argumen akan membuat set kosong. Set
tidak memiliki sintaksis literal.
Operasi in
dan not in
memeriksa apakah nilai ada (atau tidak) dalam set:
s = set(["a", "b", "c"]) "a" in s # True "z" in s # False
Set dapat di-iterasi, sehingga dapat digunakan sebagai operand loop for
, pemahaman
daftar, dan berbagai fungsi bawaan yang beroperasi pada iterasi. Panjangnya dapat
diambil menggunakan fungsi bawaan len()
, dan
urutan iterasi adalah urutan elemen yang 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 !=
. Set
s
sama dengan t
jika dan hanya jika t
adalah set yang berisi elemen
yang sama; urutan iterasi tidak signifikan. Secara khusus, set tidak sama dengan daftar
elemennya. Set tidak diurutkan sehubungan dengan set lain, 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 dua set: 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 dua 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 dari dua set: set yang berisi elemen yang ditemukan di set sisi kiri, tetapi bukan 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 perbedaan simetris dari dua set: set
yang berisi elemen yang ditemukan 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 dari set yang dihasilkan mempertahankan urutannya dari dua set operand, dengan semua elemen yang diambil dari sisi kiri diurutkan sebelum elemen apa pun yang hanya ada di sisi kanan.
Penetapan tambahan yang sesuai, |=
, &=
, -=
,
dan ^=
, mengubah kumpulan sebelah kiri yang sudah ada.
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, kumpulan dapat dibekukan, dan setelah dibekukan, semua operasi berikutnya yang mencoba memperbaruinya akan gagal.
Anggota
- tambahkan
- clear
- difference
- difference_update
- buang
- intersection
- intersection_update
- isdisjoint
- issubset
- issuperset
- pop
- hapus
- symmetric_difference
- symmetric_difference_update
- union
- update
tambahkan
None
set.add(element)
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 augmented |=
.
Parameter
Parameter | Deskripsi |
---|---|
element
|
required Elemen yang akan ditambahkan. |
hapus
None
set.clear()
selisih
set set.difference(*others)
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.
Anda dapat memanggil difference
tanpa argumen apa pun; tindakan 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
difference_update
None
set.difference_update(*others)
Jika s
dan t
adalah set, s.difference_update(t)
setara
dengan s -= t
; namun, perhatikan bahwa penetapan augmented -=
mengharuskan kedua
sisi menjadi set, sedangkan metode difference_update
juga menerima urutan dan dict.
Anda dapat memanggil difference_update
tanpa argumen apa pun; hal ini tidak akan mengubah
kumpulan.
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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
hapus
None
set.discard(element)
Anda dapat discard
nilai yang tidak ada dalam set; hal ini tidak akan mengubah set. Jika Anda ingin gagal dalam upaya menghapus elemen yang tidak ada, gunakan
remove
. Jika Anda perlu menghapus beberapa elemen dari
set, lihat difference_update
atau operasi penetapan
-=
yang ditambahkan.
Misalnya,
s = set(["x", "y"]) s.discard("y") # None; s == set(["x"]) s.discard("y") # None; s == set(["x"])
Parameter
Parameter | Deskripsi |
---|---|
element
|
required Elemen yang akan dihapus. Harus dapat di-hash. |
irisan
set set.intersection(*others)
Jika s
dan t
adalah set, s.intersection(t)
setara dengan
s & t
; namun, perhatikan bahwa operasi &
mengharuskan kedua sisi
menjadi set, sedangkan metode intersection
juga menerima urutan dan dict.
Anda dapat memanggil intersection
tanpa argumen apa pun; tindakan 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
intersection_update
None
set.intersection_update(*others)
Jika s
dan t
adalah set, s.intersection_update(t)
setara dengan s &= t
; namun, perhatikan bahwa penetapan
augmentasi &=
mengharuskan kedua sisi berupa set, sedangkan metode intersection_update
juga
menerima urutan dan dict.
Anda dapat memanggil intersection_update
tanpa argumen apa pun; hal ini tidak akan mengubah
kumpulan.
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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
isdisjoint
bool set.isdisjoint(other)
Misalnya,
set([1, 2]).isdisjoint([3, 4]) # True set().isdisjoint(set()) # True set([1, 2]).isdisjoint([2, 3]) # False
Parameter
Parameter | Deskripsi |
---|---|
other
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
issubset
bool set.issubset(other)
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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
issuperset
bool set.issuperset(other)
Perhatikan bahwa set 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
pop
unknown set.pop()
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)
remove
gagal jika elemen tidak ada dalam set. Jika Anda tidak ingin gagal dalam
upaya menghapus elemen yang tidak ada, gunakan discard
.
Jika Anda perlu menghapus beberapa elemen dari set, lihat
difference_update
atau operasi penetapan
augmentasi -=
.
Parameter
Parameter | Deskripsi |
---|---|
element
|
required Elemen yang akan dihapus. Harus berupa elemen set (dan dapat di-hash). |
symmetric_difference
set set.symmetric_difference(other)
Jika s
dan t
adalah set, s.symmetric_difference(t)
setara dengan s ^ t
; namun, perhatikan bahwa operasi ^
mengharuskan kedua
sisi menjadi 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
symmetric_difference_update
None
set.symmetric_difference_update(other)
Jika s
dan t
adalah set, s.symmetric_difference_update(t)
setara dengan penetapan augmented `s ^= t; however, note that the
^=` yang mengharuskan kedua
sisi menjadi 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
Union
set set.union(*others)
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.
Anda dapat memanggil union
tanpa argumen apa pun; tindakan 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |
update
None
set.update(*others)
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 |=
mengharuskan kedua sisi
menjadi 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
|
required Set, urutan elemen yang dapat di-hash, atau dict. |