โครงสร้างข้อมูลมีความสำคัญในการเขียนโปรแกรม ใช้เพื่อจัดระเบียบ จัดเก็บ และจัดการข้อมูลในลักษณะที่เข้าถึงและแก้ไขได้อย่างมีประสิทธิภาพ
ลองนึกภาพการซักผ้ารายสัปดาห์ของคุณ ตามหลักการแล้ว คุณควรแยกถุงเท้า เสื้อยืด กางเกง และเสื้อผ้าสำเร็จรูปในลิ้นชักแยกกันเพื่อให้หยิบใช้ได้ง่ายในตอนเช้าก่อนจะออกไปข้างนอก คุณกำลังเตรียมพร้อมกับโครงสร้างข้อมูล ทีนี้ ลองนึกภาพการทิ้งข้าวของทั้งหมดไว้ในลิ้นชักเดียวหรือหลายลิ้นชักโดยไม่มีการจัดระเบียบ คุณคิดว่าต้องใช้เวลานานแค่ไหนกว่าจะทำงานได้ดีสำหรับการทำงานหรือเที่ยวกลางคืน? สิ่งนี้กำลังเตรียมพร้อมโดยไม่มีโครงสร้างข้อมูล
ในบทความนี้ เราจะเจาะลึกถึงโครงสร้างข้อมูลในตัวที่ Python มีให้
โครงสร้างข้อมูลในตัวใน Python
โครงสร้างข้อมูลในตัวใน Python ประกอบด้วยรายการ พจนานุกรม สิ่งอันดับ และชุด
รายการ
รายการเป็นโครงสร้างข้อมูลที่เปลี่ยนแปลงได้ (สามารถเปลี่ยนแปลงได้) ซึ่งสามารถมีองค์ประกอบหรือชิ้นส่วนที่แตกต่างกันได้ กล่าวคือ รายการเดียวสามารถมีข้อมูลประเภทต่างๆ ได้
list =['string', 300, (2, 4), ' that Previous data types is a tuple']
โครงสร้างข้อมูลรายการมี 11 วิธีที่ใช้ในการเพิ่ม ลบ หรือจัดการรายการเอง
การเพิ่มองค์ประกอบลงในรายการ
- append():วิธีการ append() เพิ่มรายการเดียวลงในรายการ
list =['string, next is tupel', (2, 1), 3] list.append(500) print(list) # prints ['string, next is tupel', (2, 1), 3 , 500]
- extend():วิธี expand() จะต่อท้ายรายการตามรายการทั้งหมดจาก iterable ซึ่งแตกต่างจาก append() ดังนี้
list =['string, next is tupel', (2, 1), 3] list.append((8, 9)) print(list) # พิมพ์ ['string, next is tupel', (2, 1), 3, (8, 9)] # สังเกตว่าผนวก () ปล่อยให้ (8, 9) เป็นทูเพิล
list =['string, next is tupel', (2, 1), 3] list.extend((8, 9)) print(list) # พิมพ์ ['string, next is tupel', (2, 1), 3, 8, 9] # ขอให้สังเกตว่า extend() ไม่ได้ปล่อยให้ (8, 9) เป็นทูเพิล
- insert():วิธีการ insert() แทรกรายการในตำแหน่งหรือดัชนีที่กำหนด อาร์กิวเมนต์แรกเป็นดัชนีขององค์ประกอบที่ต้องแทรก อาร์กิวเมนต์ที่สองคือองค์ประกอบเอง
list =['string, next is tupel', (2, 1), 3] list.insert(0, 700) print(list) # พิมพ์ [700, 'string, next is tupel', (2, 1), 3]# แทรก 700 ในดัชนี 0
การลบองค์ประกอบออกจากรายการ
- remove():วิธีการ remove() จะลบรายการแรกในรายการที่มีค่าที่ได้รับ
list =['string, next is tupel', (2, 1), 3, 8, 3] list.remove(3) print(list) # พิมพ์ ['string, next is tupel', (2, 1), 8, 3]
- pop():วิธีการ pop() จะลบค่าในตำแหน่งที่ได้รับ อย่างไรก็ตาม ถ้าไม่มีการกำหนดดัชนี ก็จะลบรายการสุดท้ายออก
list =['string, next is tupel', (2, 1), 3] list.pop(0) print(list) # prints [(2, 1), 3]
list =['string, next is tupel', (2, 1), 3] list.pop() print(list) # prints ['string, next is tupel', (2, 1)] ก่อน>
- clear():วิธีการ clear() ไม่มีอาร์กิวเมนต์ โดยจะลบรายการทั้งหมดออกจากรายการ
list =['string, next is tupel', (2, 1), 3] list.clear() print(list) # prints []
วิธีการอื่นๆ ของรายการ
- index():เมธอด index() ส่งกลับค่าดัชนีของค่าที่กำหนด
list =[8, 20, 1, 9, 2, 3, 937, 0] print(list.index(9)) # พิมพ์ 3
- count():วิธีการ count() จะนับจำนวนครั้งที่ค่าเกิดขึ้นในรายการ
list =[8, 20, 1, 8, 2, 8, 937, 8] พิมพ์ (list.count(8)) # พิมพ์ 4
- sort():วิธีการ sort() สามารถใช้โดยมีหรือไม่มีอาร์กิวเมนต์ก็ได้ และสามารถใช้สำหรับการเรียงลำดับการปรับแต่งเองได้
รายการ =[8, 20, 1, 9, 2, 3, 937, 0] list.sort() พิมพ์ (รายการ) # พิมพ์ [0, 1, 2, 3, 8, 9, 20, 937]
รายการ =[8, 20, 1, 9, 2, 3, 937, 0] list.sort(reverse=True) พิมพ์(รายการ) # พิมพ์ [937, 20, 9, 8, 3, 2, 1 , 0]
- reverse():วิธีการย้อนกลับจะย้อนกลับองค์ประกอบของรายการในตำแหน่ง เหมือนกับวิธีการจัดเรียงด้านบนที่ใช้อาร์กิวเมนต์การเรียงลำดับแบบกำหนดเอง
รายการ =[8, 20, 1, 9, 2, 3, 937, 0] list.reverse() พิมพ์ (รายการ) # พิมพ์ [0, 937, 3, 2, 9, 1, 20, 8]
- copy():วิธีการ copy() จะส่งกลับสำเนาของรายการ
รายการ =[8, 20, 1, 9, 2, 3, 937, 0] list.copy() พิมพ์ (รายการ) # พิมพ์ [8, 20, 1, 9, 2, 3, 937, 0]
ทูเพิลส์
Tuples เป็นข้อมูลที่จัดเก็บไว้ในวงเล็บ ไม่เหมือนกับรายการตรงที่พวกเขาไม่สามารถเปลี่ยนแปลงได้ (หมายความว่าไม่สามารถเปลี่ยนแปลงได้) และเร็วกว่ารายการ เนื่องจากพวกมันไม่เปลี่ยนรูป เราจึงสามารถใช้เป็นกุญแจในพจนานุกรมได้ ทูเพิลยังสามารถใช้สำหรับเมื่อใดก็ตามที่เราต้องการส่งคืนผลลัพธ์หลายรายการจากฟังก์ชัน
เราสามารถเพิ่มข้อมูลลงในทูเพิลได้โดยใช้การต่อกัน
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ทูเพิล =(1, 2, 3) พิมพ์ (ทูเปิล) # พิมพ์ (1, 2, 3) ทูเพิล =ทูเปิล + (4, 5, 6) พิมพ์ (ทูเปิล) # พิมพ์ (1, 2, 3, 4 , 5, 6)
พจนานุกรม
พจนานุกรมคือโครงสร้างข้อมูลที่เก็บคู่ค่าคีย์ เช่น อ็อบเจกต์ใน JavaScript เช่นเดียวกับรายการ โครงสร้างข้อมูลเหล่านี้เปลี่ยนแปลงได้ หมายความว่าเราสามารถเปลี่ยนแปลงข้อมูลได้
ตัวอย่างของคู่ค่าคีย์คือลักษณะของบุคคลและคำอธิบายของคุณลักษณะเหล่านั้น ชื่อ อายุ ส่วนสูง และน้ำหนัก ล้วนเป็นกุญแจสำคัญได้ Josh, 33, 5'10, 180 lbs, ทั้งหมดสามารถเป็นค่าสำหรับคีย์เหล่านั้นได้
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' }
เนื่องจากพจนานุกรมสามารถเปลี่ยนแปลงได้ เราจึงสามารถเปลี่ยนชื่อ 'Josh' เป็นชื่ออื่นได้
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } dict['name'] ='Patrick' พิมพ์ (dict) # พิมพ์ {'name':'Patrick', 'age':33, 'height':"5'10", 'weight':'180 lbs'}
เราสามารถเพิ่มค่าได้โดยการสร้างคู่ค่าคีย์ใหม่
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } dict['location'] ='San Francisco' print(dict)# พิมพ์ {'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs', 'location':'San Francisco'}
นอกจากนี้เรายังสามารถลบคู่ของค่าคีย์ในพจนานุกรมโดยใช้เมธอด del, pop() หรือ popitem() โปรดทราบว่าด้วยพจนานุกรม pop() ต้องใช้อาร์กิวเมนต์ ดังนั้นเราจึงต้อง popitem() เพื่อลบออกจากคู่ค่าคีย์สุดท้ายจากพจนานุกรม
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } เดล dict['name']print(dict) # พิมพ์ {'age':33 'height':"5'10", 'weight':'180 lbs'}
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } dict.pop('name')print(dict. )# พิมพ์ {'age':33 'height':"5'10", 'weight':'180 lbs'}
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } dict.popitem()print(dict)# พิมพ์ {'name':'Josh', 'age':33, 'height':"5'10"}
เราสามารถพิมพ์เฉพาะคีย์หรือเฉพาะค่าของพจนานุกรมก็ได้
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } print(dict.keys())# พิมพ์ dict_keys (['ชื่อ', 'อายุ', 'ส่วนสูง', 'น้ำหนัก'])
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } print(dict.values())# พิมพ์ dict_values (['Josh', 33, "5'10", '180 lbs'])
ในการพิมพ์เป็นคู่ของค่าคีย์ เราสามารถใช้วิธี items()
dict ={'name':'Josh', 'age':33, 'height':"5'10", 'weight':'180 lbs' } print(dict.items())# พิมพ์ dict_items ([('name', 'Josh'), ('age', 33), ('height', "5'10"), ('weight', '180 lbs')])
ชุด
ชุดเป็นคอลเลกชันที่ไม่ซ้ำกันขององค์ประกอบที่ไม่ซ้ำกัน ซึ่งหมายความว่าจะไม่รวมองค์ประกอบที่ซ้ำกัน ชุดมีลักษณะเหมือนพจนานุกรมโดยที่ทั้งคู่เก็บข้อมูลไว้ในวงเล็บปีกกา แต่ชุดไม่มีคู่ค่าคีย์ไม่เหมือนพจนานุกรม
set ={1, 2, 2, 2, 3, 3, 4, 4} พิมพ์ (ชุด) # พิมพ์ {1, 2, 3, 4}
เราสามารถเพิ่มองค์ประกอบให้กับชุดโดยใช้วิธีการ add()
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# พิมพ์ {1, 2, 3, 4, 5}
มีอีกสี่วิธีที่เราสามารถใช้ได้เมื่อใช้ set, union(), intersection(), Difference() และ symmetric_difference()
- union():เมธอด union() จะรวมชุดผลต่างสองชุดเข้าด้วยกัน โดยนำความธรรมดาของทั้งสองชุดมารวมกันเป็นชุดเดียวโดยไม่ซ้ำกัน
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# พิมพ์ {1, 2, 3, 4, 5} อีกชุด ={3, 3, 4, 4, 5, 5, 6} พิมพ์ (set.union (anotherSet)) # พิมพ์ {1, 2, 3, 4, 5, 6}
- intersection():วิธี intersection ค้นหาองค์ประกอบทั่วไปในทั้งสองชุด
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# พิมพ์ {1, 2, 3, 4, 5} อีกชุด ={3, 3, 4, 4, 5, 5, 6}print(set.intersection(anotherSet))# พิมพ์ {3, 4, 5}
- difference():วิธีผลต่างทำสิ่งที่ตรงกันข้ามกับวิธีทางแยก โดยจะดึงความธรรมดาทั้งหมดออกและพิมพ์สิ่งที่เหลืออยู่จากชุดแรก
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# พิมพ์ {1, 2, 3, 4, 5} อีกชุด ={3, 3, 4, 4, 5, 5, 6}print(set.difference(anotherSet))# พิมพ์ {1, 2}
- symmetric_difference():วิธี symmetric_difference() เหมือนกับวิธีผลต่าง ยกเว้นว่าเราได้ค่าความแตกต่างของทั้งสองชุดในเอาต์พุต
set ={1, 2, 2, 2, 3, 3, 4, 4} set.add(5)print(set)# พิมพ์ {1, 2, 3, 4, 5} อีกชุด ={3, 3, 4, 4, 5, 5, 6}print(set.symmetric_difference(anotherSet))# พิมพ์ {1, 2, 6}