Matematikte kümeler ve sıralı kümeler (osetler) vardır.
- set : benzersiz öğelerden oluşan sırasız bir kap (Uygulandı)
- oset : benzersiz öğelerden oluşan sıralı bir kap (NotImplemented)
Python'da yalnızca kümeler doğrudan uygulanır. Normal dikt anahtarlarıyla ( 3.7+ ) oset'leri taklit edebiliriz .
verilmiş
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
kod
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
gösteri
Kopyalar kaldırılır, ekleme sırası korunur.
list(oset)
# [1, 2, 20, 6, 210]
Dikte tuşlarında set benzeri işlemler.
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
ayrıntılar
Not: sırasız bir yapı, sıralı elemanları engellemez. Aksine, sürdürülen düzen garanti edilmez. Misal:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
Bir liste ve çoklu kümenin (mset) iki tane daha büyüleyici matematiksel veri yapısı olduğunu keşfetmekten memnun olabiliriz :
- liste : kopyalara izin veren sıralı bir öğe kabı (Uygulandı)
- mset : çoğaltmalara izin veren sırasız bir öğe kabı (NotImplemented) *
özet
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* Bir çoklu set, çoklukların (sayımların) collections.Counter()
dikte benzeri bir eşlemesi ile dolaylı olarak benzetilebilir .