set

Laporkan masalah Lihat sumber Nightly 8.1 · 8.0 · 7.5 · 7.4 · 7.3 · 7.2

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

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 augmented |=.

Parameter

Parameter Deskripsi
element required
Elemen yang akan ditambahkan.

hapus

None set.clear()

Menghapus semua elemen set.

selisih

set set.difference(*others)

Menampilkan set baru yang dapat diubah yang berisi perbedaan 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.

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)

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 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)

Menghapus elemen dari set jika ada.

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)

Menampilkan set baru yang dapat diubah 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 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)

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

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)

Menampilkan true jika set ini tidak memiliki elemen yang sama dengan set lainnya.

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)

Menampilkan true jika set ini adalah subset dari set lain.

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)

Menampilkan true jika set ini adalah superset dari set lain.

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()

Menghapus dan menampilkan elemen pertama set (dalam urutan iterasi, yang merupakan urutan 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 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)

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

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)

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

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)

Menampilkan set baru yang dapat diubah 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.

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)

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 |= 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.