ในวิชาคณิตศาสตร์มีเซตและเซตตามลำดับ (osets)
- ชุด : คอนเทนเนอร์ที่ไม่ได้เรียงลำดับขององค์ประกอบที่ไม่ซ้ำกัน (ใช้งาน)
- oset : คอนเทนเนอร์ที่สั่งซื้อขององค์ประกอบเฉพาะ (NotImplemented)
ใน Python จะใช้เฉพาะชุดเท่านั้น เราสามารถจำลองระบบปฏิบัติการด้วยปุ่ม dict ปกติ ( 3.7+ )
ป.ร. ให้ไว้
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
รหัส
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
การสาธิต
การจำลองจะถูกลบออกลำดับการแทรกจะถูกเก็บรักษาไว้
list(oset)
# [1, 2, 20, 6, 210]
ตั้งค่าการดำเนินการที่เหมือนกันบนปุ่ม dict
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
รายละเอียด
หมายเหตุ: โครงสร้างที่ไม่เรียงลำดับไม่ได้กีดกันองค์ประกอบที่เรียงลำดับ แต่ไม่รับประกันความเป็นระเบียบเรียบร้อย ตัวอย่าง:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
อาจมีความยินดีที่พบว่าlistและmultiset (mset) เป็นโครงสร้างข้อมูลทางคณิตศาสตร์ที่น่าสนใจอีกสองแบบ:
- รายการ : คอนเทนเนอร์ขององค์ประกอบที่สั่งซื้อซึ่งอนุญาตให้จำลองแบบ (Implemented)
- mset : คอนเทนเนอร์ที่ไม่เรียงลำดับขององค์ประกอบที่อนุญาตให้จำลองแบบ (NotImplemented) *
สรุป
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* ชุดข้อมูลหลายชุดสามารถจำลองทางอ้อมด้วยcollections.Counter()
การทำแผนที่แบบตามคำสั่งของการคูณ (จำนวนนับ)