== สารบัญ ==
๛ ความแตกต่างระหว่างเซ็ตกับลิสต์
๛ การสร้างเซ็ต
๛ คุณสมบัติที่ใช้ได้เหมือนกับลิสต์
๛ การเข้าถึงข้อมูลในเซ็ต
๛ การเพิ่มข้อมูลในเซ็ต
๛ การลบข้อมูลออกจากเซ็ต
๛ ซับเซ็ต ซูเปอร์เซ็ต
๛ การดำเนินการของเซ็ต
๛ ใช้เซ็ตเพื่อตัดตัวซ้ำในลิสต์
๛ สรุปเนื้อหา
ข้อมูลที่ประกอบขึ้นจากรายการของข้อมูลหลายอันมารวมกันไม่ได้มีแค่ชนิดลำดับ เช่น ลิสต์, ทูเพิล และเรนจ์ ดังที่ได้แนะนำไปแล้ว แต่ยังมีข้อมูลชนิด
เซ็ต (set) ซึ่งจะมาแนะนำในบทนี้
ความแตกต่างระหว่างเซ็ตกับลิสต์介 เซ็ตคือกลุ่มของข้อมูลเช่นเดียวกันกับลิสต์ สามารถเพิ่มและแก้ไขข้อมูลได้เช่นเดียวกัน แต่ก็มีข้อแตกต่างดังนี้
- ไม่มีลำดับของข้อมูล
- เก็บข้อมูลซ้ำไม่ได้
- สามารถทำการยูเนียน (union) และ อินเทอร์เซ็กชัน (intersection) ได้
- สามารถค้นด้วย
in
ได้เร็วกว่าลิสต์มาก
การสร้างเซ็ต介 สามารถสร้างขึ้นด้วยวิธีที่คล้ายกับลิสต์ แค่เปลี่ยนมาใช้เครื่องหมายวงเล็บปีกกา
{ }
คร่อมแทน
อย่างไรก็ตาม ผลที่ได้จะพบว่าสมาชิกถูกจัดเรียงให้ใหม่โดยอัตโนมัติ และตัวที่ซ้ำจะหายไปเหลือแค่ตัวเดียว
เซ็ตสามารถสร้างขึ้นจากลิสต์หรือทูเพิลได้
หรืออาจสร้างจากสายอักขระก็ได้
ได้
คุณสมบัติที่ใช้ได้เหมือนกับลิสต์介 เซ็ตสามารถหาความยาวได้
สามารถค้นหาด้วย in ได้
ลักษณะคล้ายการแสดงถึงความเป็นสมาชิกของเซ็ตในทางคณิตศาสตร์
5∈S
สามารถหาค่าสูงสุดต่ำสุดและผลรวมของเซ็ตได้
การเข้าถึงข้อมูลในเซ็ต介 เซ็ตไม่มีลำดับดังนั้นจึงไม่สามารถใช้
[ ]
เช่นเดียวกับลิสต์หรือทูเพิลในการเข้าถึงข้อมูลได้
แต่สามารถแจกแจงได้ด้วย
for
ได้
การเพิ่มข้อมูลในเซ็ต介 สามารถเพิ่มสมาชิกลงในเซ็ตทีละตัวได้โดยใช้เมธอด
.add
แต่ถ้ามีอยู่แล้วจะไม่มีอะไรเปลี่ยนแปลง
หากต้องการเพิ่มหลายตัวให้ใช้เมธอด
.update
แล้วใส่เซ็ตหรือลิสต์ลงไปก็ได้ และถึงใส่ค่าที่มีอยู่แล้วลงไปก็ไม่มีผล
การลบข้อมูลออกจากเซ็ต介 สามารถทำได้โดยใช้เมธอด
.remove
หรือ
.discard
สองตัวนี้ต่างกันแค่ว่า
.remove
นั้นถ้าไม่มีข้อมูลตัวที่ใส่ลงไปจะขึ้นขัดข้อง แต่
.discard
ถึงไม่มีก็ไม่เกิดขัดข้อง
พอลองลบข้อมูลที่ไม่มี
ซับเซ็ต ซูเปอร์เซ็ต介 เช่นเดียวกับเซ็ตในทางคณิตศาสตร์ เซ็ตในไพธอนสามารถมาเปรียบเทียบหาซับเซ็ต คือหาว่าใครเซ็ตนึงเป็นส่วนย่อยของอีกเซ็ตหนึ่งหรือเปล่าได้
สิ่งที่เทียบเท่ากับ
s2⊂s1
(
s2
เป็นซับเซ็ตของ
s1
) คือ
s2 <= s1
หรือใช้เมธอด
.issubset
ในทำนองเดียวกัน
s2⊃s1
(
s2
เป็นซูเปอร์เซ็ตของ
s1
) คือ
s2 >= s1
หรือใช้เมธอด
.issuperset
กรณีทั้งสองที่ว่ามานี้ทั้งซับเซ็ตและซูเปอร์เซ็ตรวมกรณีที่
s1
เท่ากับ
s2
ด้วย แต่หากไม่ต้องการให้รวมก็อาจใช้
> หรือ <
การดำเนินการของเซ็ต介 เซ็ตในไพธอนมีการดำเนินการในทำนองเดียวกับในทางคณิตศาสตร์ สามารถยูเนียน อินเทอร์เซ็กชัน หาส่วนต่าง โดยใช้เมธอด
.union
,
.intersection
,
.difference
หรืออาจใช้สัญลักษณ์คั่นระหว่างเซ็ตก็ได้ โดยยูเนียนใช้
|
อินเทอร์เซ็กชันใช้
&
หาส่วนต่างใช้
-
ใช้เซ็ตเพื่อตัดตัวซ้ำในลิสต์介 เนื่องจากเซ็ตจะมีสมาชิกซ้ำกันไม่ได้ พอลิสต์แปลเป็นเซ็ตตัวที่ซ้ำกันก็จะหายหมด เราสามารถใช้ประโยชน์จากตรงนี้กำจัดตัวซ้ำในลิสต์ได้
อย่างไรก็ตาม ลำดับของสมาชิกจะถูกเปลี่ยนใหม่หมด
ถ้าอยากให้ลำดับคงเดิมไว้จะต้องทำการจัดเรียงโดยใช้ฟังก์ชัน
sorted
โดยใส่คีย์เวิร์ด
key
ให้ใช้เลขดัชนีของลิสต์เดิมเป็นตัวจัดเรียง
เท่านี้ก็ได้ลิสต์ที่ไม่มีตัวซ้ำ โดยที่ตำแหน่งยังคงเรียงตามเดิม
สรุปเนื้อหา介 เซ็ตมีลักษระคล้ายลิสต์และทูเพิล แต่ไม่มีลำดับแน่นอน แต่ก็มีคุณสมบัติบางอย่างทดแทนซึ่งสามารถนำมาใช้ประโยชน์ได้ เช่นการดำเนินการคล้ายกับเซ็ตในทางคณิตศาสตร์ และการค้นข้อมูลในเซ็ตจะเร็วกว่าลิสต์
ดังนั้นจึงอาจเหมาะที่จะใช้มากกว่าในกรณีที่ข้อมูลไม่จำเป็นต้องคำนึงถึงลำดับ
อ้างอิง