
เขียนโปรแกรมภาษา Python ตอนที่ 95 ข้อมูลประเภท Set
ใน Python เราสามารถเก็บข้อมูลหลาย ๆ ไอเท็ม ด้วยข้อมูลประเภท Set เช่นเดียวกับข้อมูลประเภท List, Tuple และ Dictionary แต่ก็มีแนวทางการใช้งานที่แตกต่างกัน
ข้อมูลที่เก็บในรูปแบบ Set จะไม่ถูกเรียงลำดับ เปลี่ยนแปลงไม่ได้ (แต่สามารถลบและเพิ่มได้) และไม่มีการทำอินเด็กซ์
การสร้างข้อมูลประเภท Set ใน Python จะใช้เครื่องหมาย curly brackets { }
เช่น myset = {"iPhone", "iPad", "iPod"}
myset = {"iPhone", "iPad", "iPod", "iLoveU"} print(myset)
{‘iPad’, ‘iPod’, ‘iLoveU’, ‘iPhone’}
ลักษณะของข้อมูลที่เก็บในรูปแบบ Set
ข้อมูลที่เก็บในรูปแบบ Set มีลักษณะดังนี้
ไม่มีการเรียงลำดับ
ข้อมูลภายใน Set จะไม่มีการเรียงลำดับ ทุกครั้งที่เราเรียกใช้ข้อมูลใน Set ลำดับของข้อมูลจะเปลี่ยนไปเรื่อย ๆ คือไม่มีการเรียงลำดับที่แน่นอน ข้อมูลที่เพิ่มเข้าไปก่อน อาจจะอยู่ลำดับสุดท้ายหรืออยู่ตรงกลาง หรือตรงไหนก็ได้ทั้งนั้น นอกจากนี้เรายังไม่สามารถเข้าถึงข้อมูลใน Set โดยการอ้างอิงอินเด็กซ์หรืออ้างคีย์ได้
myset = {"iPhone", "iPad", "iPod", "iLoveU"} print(myset) # {'iPhone', 'iPod', 'iPad', 'iLoveU'} # {'iPad', 'iPod', 'iLoveU', 'iPhone'} # เมื่อเรียกใช้ Set ชุดเดิม ในแต่ละครั้งข้อมูลจะเรียงไม่เหมือนกัน
ไม่สามารถเปลี่ยนแปลงได้
ข้อมูลใน Set จะไม่สามารถเปลี่ยนแปลงได้ คือเมื่อเพิ่มข้อมูลเข้าไปใน Set แล้ว เราจะทำการแก้ไขเปลี่ยนแปลงใด ๆ ไม่ได้ แต่เราสามารถลบหรือเพิ่มข้อมูลใหม่เข้าไปเมื่อไหร่ก็ได้
เก็บข้อมูลซ้ำกันไม่ได้
ข้อมูลภายใน Set ไม่สามารถมีค่าที่ซ้ำกันได้ คือเก็บข้อมูลซ้ำกันไม่ได้นั่นเอง ถ้ามีการเพิ่มข้อมูลใหม่เข้าไปใน Set และข้อมูลนั้นซ้ำกันข้อมูลเดิมที่มีอยู่แล้ว ข้อมูลนั้นจะไม่ถูกเก็บใน Set
myset = {"iPhone", "iPad", "iPad", "iPod", "iLoveU", "iPad"} print(myset) # {'iPhone', 'iPod', 'iPad', 'iLoveU'} # ข้อมูลที่ซ้ำกันจะถูกละเว้น
การตรวจสอบจำนวนสมาชิกใน Set
ถ้าต้องการรู้ว่าข้อมูลใน Set มีจำนวนเท่าไหร่ สามารถทำได้โดยการใช้ฟังก์ชัน len()
myset = {"iPhone", "iPad", "iPod", "iLoveU"} print(len(myset)) # 4
ชนิดข้อมูล
การเก็บข้อมูลใน Set เราสามารถเก็บข้อมูลประเภทใดก็ได้
myset1 = {"iPhone", "iPad", "iPod", "iLoveU"} myset2 = {9, 8, 7, 6} myset3 = {True, False}
หรือใน Set เดียวกัน จะเก็บข้อมูลที่มีชนิดข้อมูลแตกต่างกันก็ยังได้
myset = {"iPhone", 9, 8, 7, 6, "iPad", False, "iPod", "iLoveU", True} print(myset)
{False, True, ‘iPad’, 6, 7, 8, 9, ‘iPod’, ‘iPhone’, ‘iLoveU’}
ชนิดข้อมูลของ Set
Set มีชนิดข้อมูลเป็นออปเจ็คต์ ‘set’
myset = {"iPhone", 9, 8, 7, 6, "iPad", False, "iPod", "iLoveU", True} print(type(myset)) # <class 'set'>
Constructor
นอกจากการสร้าง Set ด้วยวิธีปกติดังที่กล่าวแล้ว เรายังสามารถใช้คอนสตรัคเตอร์ set()
สำหรับการสร้างข้อมูลประเภท Set ได้อีกด้วย
myset = set(("iPhone", 9, 8, 7, 6, "iPad", False, "iPod", "iLoveU", True)) print(myset)
{False, True, 6, 7, 8, 9, ‘iLoveU’, ‘iPhone’, ‘iPad’, ‘iPod’}
ข้อแตกต่างระหว่าง Set กับ Collection ประเภทอื่น ๆ ใน Python
Python มีข้อมูลประเภท Collection 4 ประเภท คือ List, Tuple, Set และ Dictionary ซึ่งแต่ละประเภทมีความแตกต่างกันดังนี้
- List มีการเรียงลำดับ เปลี่ยนแปลงได้ และอนุญาตให้เก็บข้อมูลซ้ำกันได้
- Tuple มีการเรียงลำดับ เปลี่ยนแปลงไม่ได้ และอนุญาตให้เก็บข้อมูลซ้ำกันได้
- Set ไม่มีการเรียงลำดับ เปลี่ยนแปลงไม่ได้ ไม่มีอินเด็กซ์ และเก็บข้อมูลซ้ำกันไม่ได้
- Dictionary มีการเรียงลำดับ (เวอร์ชัน 3.7 ขึ้นไป) เปลี่ยนแปลงข้อมูลได้ เก็บข้อมูลซ้ำกันไม่ได้