โครงสร้างข้อมูลใน Python – คู่มือฉบับสมบูรณ์
เผยแพร่แล้ว: 2021-06-14สารบัญ
โครงสร้างข้อมูลคืออะไร?
โครงสร้างข้อมูลหมายถึงการจัดเก็บข้อมูลเชิงคำนวณเพื่อการใช้งานอย่างมีประสิทธิภาพ เก็บข้อมูลในลักษณะที่สามารถแก้ไขได้และเข้าถึงได้ง่าย โดยรวมหมายถึงค่าข้อมูล ความสัมพันธ์ระหว่างค่าเหล่านี้ และการดำเนินการที่สามารถดำเนินการกับข้อมูลได้ ความสำคัญของโครงสร้างข้อมูลอยู่ในการประยุกต์ใช้ในการพัฒนาโปรแกรมคอมพิวเตอร์ เนื่องจากโปรแกรมคอมพิวเตอร์ต้องอาศัยข้อมูลเป็นหลัก การจัดเรียงข้อมูลอย่างเหมาะสมเพื่อให้เข้าถึงได้ง่ายจึงมีความสำคัญสูงสุดต่อโปรแกรมหรือซอฟต์แวร์ใดๆ
หน้าที่หลักสี่ประการของโครงสร้างข้อมูลคือ
- เพื่อป้อนข้อมูล
- เพื่อประมวลผลข้อมูล
- เพื่อรักษาข้อมูล
- ในการดึงข้อมูล
ประเภทของโครงสร้างข้อมูลใน Python
Python รองรับโครงสร้างข้อมูลหลายแบบเพื่อให้เข้าถึงและจัดเก็บข้อมูลได้ง่าย ชนิดโครงสร้างข้อมูลของ Python สามารถจำแนกได้เป็นชนิดข้อมูลพื้นฐานและไม่ใช่แบบพื้นฐาน ชนิดข้อมูลเดิม ได้แก่ Integers, Float, Strings และ Boolean ในขณะที่ชนิดหลังคืออาร์เรย์ รายการ tuples พจนานุกรม ชุด และไฟล์ ดังนั้น โครงสร้างข้อมูลใน python จึงเป็นทั้งโครงสร้างข้อมูลในตัวและโครงสร้างข้อมูลที่กำหนดโดยผู้ใช้ โครงสร้างข้อมูลในตัวเรียกว่าโครงสร้างข้อมูลที่ไม่ใช่แบบพื้นฐาน
โครงสร้างข้อมูลในตัว
Python มีโครงสร้างข้อมูลหลายแบบที่ทำหน้าที่เป็นคอนเทนเนอร์สำหรับจัดเก็บข้อมูลอื่นๆ โครงสร้างข้อมูล python เหล่านี้ ได้แก่ List, Dictionaries, Tuple และ Sets
โครงสร้างข้อมูลที่ผู้ใช้กำหนด
โครงสร้างข้อมูลเหล่านี้สามารถตั้งโปรแกรมเป็นฟังก์ชันเดียวกับ โครงสร้างข้อมูลใน ตัว ใน python โครงสร้างข้อมูลที่ผู้ใช้กำหนด ได้แก่ Linked List, Stack, Queue, Tree, Graph และ Hashmap
รายการโครงสร้างข้อมูลในตัว และคำอธิบาย
1. รายการ
ข้อมูลที่จัดเก็บไว้ในรายการจะถูกจัดเรียงตามลำดับและเป็นประเภทข้อมูลที่แตกต่างกัน สำหรับทุกข้อมูล จะมีการกำหนดที่อยู่และเรียกว่าดัชนี ค่าดัชนีเริ่มต้นด้วย 0 และดำเนินต่อไปจนถึงองค์ประกอบสุดท้าย นี่เรียกว่าดัชนีบวก ดัชนีเชิงลบยังมีอยู่หากองค์ประกอบสามารถเข้าถึงได้แบบย้อนกลับ สิ่งนี้เรียกว่าการจัดทำดัชนีเชิงลบ
การสร้างรายการ
รายการถูกสร้างขึ้นเป็นวงเล็บเหลี่ยม สามารถเพิ่มองค์ประกอบได้ตามลำดับ สามารถเพิ่มลงในวงเล็บเหลี่ยมเพื่อสร้างรายการได้ หากไม่มีการเพิ่มองค์ประกอบ รายการว่างจะถูกสร้างขึ้น มิฉะนั้นองค์ประกอบภายในรายการจะถูกสร้างขึ้น
ป้อนข้อมูล my_list = [] #สร้างรายการว่าง พิมพ์ (my_list) my_list = [1, 2, 3, 'example', 3.132] #การสร้างรายการด้วย data พิมพ์ (my_list) | เอาท์พุต [] [1, 2, 3, 'ตัวอย่าง', 3.132] |
การเพิ่มองค์ประกอบภายในรายการ
ฟังก์ชันสามอย่างใช้สำหรับการเพิ่มองค์ประกอบภายในรายการ ฟังก์ชันเหล่านี้คือ append(), expand() และ insert()
- องค์ประกอบทั้งหมดจะถูกเพิ่มเป็นองค์ประกอบเดียวโดยใช้ฟังก์ชัน append()
- สำหรับการเพิ่มองค์ประกอบทีละรายการในรายการ จะใช้ฟังก์ชัน extend()
- สำหรับการเพิ่มองค์ประกอบด้วยค่าดัชนี ฟังก์ชัน insert() จะถูกใช้
ป้อนข้อมูล my_list = [1, 2, 3] พิมพ์ (my_list) my_list.append([555, 12]) #เพิ่มเป็นองค์ประกอบเดียว พิมพ์ (my_list) my_list.extend([234, 'more_example']) #เพิ่มเป็นองค์ประกอบที่แตกต่างกัน พิมพ์ (my_list) my_list.insert(1, 'insert_example') #เพิ่มองค์ประกอบ i พิมพ์ (my_list) | เอาท์พุท: [1, 2, 3] [1, 2, 3, [555, 12]] [1, 2, 3, [555, 12], 234, 'ตัวอย่างเพิ่มเติม'] [1, 'insert_example', 2, 3, [555, 12], 234, 'more_example'] |
การลบองค์ประกอบภายในรายการ
คำหลักในตัว "del" ใน python ใช้เพื่อลบองค์ประกอบออกจากรายการ อย่างไรก็ตาม ฟังก์ชันนี้จะไม่ส่งคืนองค์ประกอบที่ถูกลบ
- สำหรับการส่งคืนองค์ประกอบที่ถูกลบจะใช้ฟังก์ชัน pop() ใช้ค่าดัชนีขององค์ประกอบที่จะลบ
- ฟังก์ชัน remove() ใช้เพื่อลบองค์ประกอบตามค่าของมัน
เอาท์พุท:
[1, 2, 3, 'ตัวอย่าง', 3.132, 30]
[1, 2, 3, 3.132, 30]
Popped Element: 2 รายการที่เหลือ: [1, 3, 3.132, 30]
[]
การประเมินองค์ประกอบในรายการ
- การประเมินองค์ประกอบในรายการทำได้ง่าย การพิมพ์รายการจะแสดงองค์ประกอบโดยตรง
- องค์ประกอบเฉพาะสามารถประเมินได้โดยการส่งผ่านค่าดัชนี
เอาท์พุท:
1
2
3
ตัวอย่าง
3.132
10
30
[1, 2, 3, 'ตัวอย่าง', 3.132, 10, 30]
ตัวอย่าง
[1, 2]
[30, 10, 3.132, 'ตัวอย่าง', 3, 2, 1]
นอกเหนือจากการดำเนินการดังกล่าวแล้ว ยังมีฟังก์ชันในตัวอื่นๆ อีกหลายอย่างใน python สำหรับการทำงานกับรายการ
- len(): ฟังก์ชันนี้ใช้เพื่อคืนค่าความยาวของรายการ
- index(): ฟังก์ชันนี้อนุญาตให้ผู้ใช้ทราบค่าดัชนีของค่าที่ส่งผ่าน
- ฟังก์ชัน count() ใช้ในการหาจำนวนค่าที่ส่งไป
- sort() เรียงลำดับค่าในรายการและแก้ไขรายการ
- sorted() เรียงลำดับค่าในรายการและส่งกลับรายการ
เอาท์พุต
6
3
2
[1, 2, 3, 10, 10, 30]
[30, 10, 10, 3, 2, 1]
2. พจนานุกรม
พจนานุกรมเป็นโครงสร้างข้อมูลประเภทหนึ่งที่จัดเก็บคู่คีย์-ค่ามากกว่าองค์ประกอบเดียว สามารถอธิบายได้ด้วยตัวอย่างสมุดโทรศัพท์ที่มีหมายเลขของบุคคลพร้อมกับหมายเลขโทรศัพท์ ชื่อและหมายเลขโทรศัพท์ที่นี่กำหนดค่าคงที่ที่เป็น "กุญแจ" และตัวเลขและชื่อของบุคคลทั้งหมดเป็นค่าของคีย์นั้น การประเมินคีย์จะให้สิทธิ์เข้าถึงค่าทั้งหมดที่จัดเก็บไว้ในคีย์นั้น โครงสร้างคีย์-ค่าที่กำหนดไว้ใน Python นี้เรียกว่าพจนานุกรม
การสร้างพจนานุกรม
- วงเล็บปีกกาไม่ได้ใช้งานฟังก์ชัน dict() สามารถใช้สำหรับสร้างพจนานุกรมได้
- จะเพิ่มคู่คีย์-ค่าในขณะที่สร้างพจนานุกรม
การปรับเปลี่ยนคู่คีย์-ค่า
การแก้ไขใด ๆ ในพจนานุกรมสามารถทำได้โดยใช้คีย์เท่านั้น ดังนั้นควรเข้าถึงคีย์ก่อนแล้วจึงทำการปรับเปลี่ยน
ป้อนข้อมูล my_dict = {'First': 'Python', 'Second': 'Java'} print(my_dict) my_dict['Second'] = 'C++' #เปลี่ยนองค์ประกอบการพิมพ์ (my_dict) my_dict['Third'] = 'Ruby' #adding พิมพ์คู่คีย์-ค่า (my_dict) | เอาท์พุท: {'แรก': 'Python', 'ที่สอง': 'Java'} {'แรก': 'Python', 'วินาที': 'C++'} {'อันดับแรก': 'Python', 'Second': 'C++', 'Third': 'Ruby'} |
การลบพจนานุกรม
ฟังก์ชัน clear () ใช้เพื่อลบพจนานุกรมทั้งหมด พจนานุกรมสามารถประเมินผ่านคีย์โดยใช้ฟังก์ชัน get() หรือส่งผ่านค่าคีย์
ป้อนข้อมูล dict = {'เดือน': 'มกราคม', 'ฤดูกาล': 'ฤดูหนาว'} พิมพ์ (ดิก['ก่อน']) print(dict.get('วินาที') | เอาท์พุต มกราคม ฤดูหนาว |
ฟังก์ชันอื่นๆ ที่เกี่ยวข้องกับพจนานุกรม ได้แก่ คีย์ (), ค่า () และรายการ ()
3. ทูเปิล
คล้ายกับรายการ Tuples เป็นรายการที่จัดเก็บข้อมูล แต่ข้อแตกต่างเพียงอย่างเดียวคือข้อมูลที่จัดเก็บไว้ใน tuple ไม่สามารถแก้ไขได้ หากข้อมูลภายในทูเพิลเปลี่ยนแปลงได้ เท่านั้นจึงจะสามารถเปลี่ยนข้อมูลได้
- สามารถสร้าง Tuples ได้โดยใช้ฟังก์ชัน tuple()
ป้อนข้อมูล
new_tuple = (10, 20, 30, 40)
พิมพ์ (new_tuple)
เอาท์พุต
(10, 20, 30, 40)
- องค์ประกอบในทูเพิลสามารถประเมินได้ในลักษณะเดียวกับการประเมินองค์ประกอบในรายการ
ป้อนข้อมูล
new_tuple2 = (10, 20, 30, 'อายุ')
สำหรับ x ใน new_tuple2:
พิมพ์(x)
พิมพ์(new_tuple2)
พิมพ์(new_tuple2[0])
เอาท์พุต
10
20
30
อายุ
(10, 20, 30, 'อายุ')
10
- ตัวดำเนินการ '+' ใช้เพื่อต่อท้ายทูเพิลอีกตัวหนึ่ง
ป้อนข้อมูล
ทูเพิล = (1, 2, 3)
ทูเพิล = ทูเพิล + (4, 5, 6
พิมพ์ (ทูเพิล)
เอาท์พุต
(1, 2, 3, 4, 5, 6)
4. ชุด
โครงสร้างข้อมูลชุดคล้ายกับชุดเลขคณิต โดยพื้นฐานแล้วมันคือการรวบรวมองค์ประกอบที่เป็นเอกลักษณ์ หากข้อมูลยังคงทำซ้ำ ให้ตั้งค่าให้พิจารณาเพิ่มองค์ประกอบนั้นเพียงครั้งเดียว
- ชุดสามารถสร้างได้โดยการส่งผ่านค่าภายในวงเล็บดอกไม้
ป้อนข้อมูล
ชุด = {10, 20, 30, 40, 40, 40}
พิมพ์ (ชุด)
เอาท์พุต
{10, 20, 30, 40}
- ฟังก์ชัน add() สามารถใช้เพื่อเพิ่มองค์ประกอบในชุด
- ในการรวมข้อมูลจากสองชุด สามารถใช้ฟังก์ชัน union() ได้
- เพื่อระบุข้อมูลที่มีอยู่ในทั้งสองชุด ใช้ฟังก์ชัน intersection()
- ฟังก์ชันผลต่าง () ส่งออกเฉพาะข้อมูลที่ไม่ซ้ำกันของชุด ลบข้อมูลทั่วไป
- ฟังก์ชัน symmetric_difference() จะแสดงผลข้อมูลเฉพาะสำหรับทั้งสองชุด
รายการโครงสร้างข้อมูลและคำอธิบายที่ผู้ใช้กำหนด
1. กอง
สแต็กคือโครงสร้างเชิงเส้นตรงที่เป็นโครงสร้างแบบเข้าก่อนออกก่อน (LIFO) หรือแบบเข้าก่อนออกก่อน (FIFO) มีการดำเนินการหลักสองอย่างในสแต็ก ได้แก่ พุชและป๊อป Push หมายถึงการผนวกองค์ประกอบที่ด้านบนของรายการในขณะที่ป๊อปหมายถึงการลบองค์ประกอบออกจากด้านล่างของสแต็ก กระบวนการนี้อธิบายไว้อย่างดีใน รูปที่ 1
ประโยชน์ของ stack
- องค์ประกอบก่อนหน้าสามารถประเมินได้ผ่านการสืบค้นกลับ
- การจับคู่องค์ประกอบแบบเรียกซ้ำ
แหล่งที่มา
รูปที่ 1: การแสดงกราฟิกของ Stack
ตัวอย่าง
เอาท์พุต
['ที่หนึ่งที่สองที่สาม']
['แรก', 'ที่สอง', 'สาม', 'ที่สี่', 'ที่ห้า']
ที่ห้า
['แรก', 'ที่สอง', 'สาม', 'ที่สี่']
2. คิว
คล้ายกับสแต็ก คิวคือโครงสร้างเชิงเส้นที่ช่วยให้แทรกองค์ประกอบที่ปลายด้านหนึ่งและลบออกจากปลายอีกด้านหนึ่งได้ การดำเนินการทั้งสองนี้เรียกว่า enqueue และ dequeue องค์ประกอบที่เพิ่มล่าสุดจะถูกลบออกก่อนเช่นกอง การแสดงภาพแบบกราฟิกของคิวแสดงใน รูปที่ 2 การใช้งานหลักอย่างหนึ่งของคิวคือการประมวลผลสิ่งต่างๆ ทันทีที่เข้าสู่
แหล่งที่มา
รูปที่ 2 : การแสดงกราฟิกของ Queues
ตัวอย่าง
เอาท์พุต
['ที่หนึ่งที่สองที่สาม']
['แรก', 'ที่สอง', 'สาม', 'ที่สี่', 'ที่ห้า']
แรก
ที่ห้า
['ที่สอง', 'สาม', 'ที่สี่', 'ที่ห้า']
3. ต้นไม้
ต้นไม้เป็นโครงสร้างข้อมูลที่ไม่เชิงเส้นและเป็นลำดับชั้นซึ่งประกอบด้วยโหนดที่เชื่อมโยงผ่านขอบ โครงสร้าง ข้อมูลแผนผังหลาม มีโหนดรูท โหนดหลัก และโหนดย่อย รูทเป็นองค์ประกอบบนสุดของโครงสร้างข้อมูล ต้นไม้ไบนารีเป็นโครงสร้างที่องค์ประกอบมีโหนดย่อยไม่เกินสองโหนด
ประโยชน์ของต้นไม้
- แสดงความสัมพันธ์เชิงโครงสร้างขององค์ประกอบข้อมูล
- ข้ามผ่านแต่ละโหนดได้อย่างมีประสิทธิภาพ
- ผู้ใช้สามารถแทรก ค้นหา ดึงข้อมูล และลบข้อมูลได้
- โครงสร้างข้อมูลที่ยืดหยุ่น
รูปที่ 3: การแสดงกราฟิกของต้นไม้
แหล่งที่มา
ตัวอย่าง:
เอาท์พุต
อันดับแรก
ที่สอง
ที่สาม
4. กราฟ
โครงสร้างข้อมูล ที่ไม่เป็นเชิงเส้นอื่น ในไพ ธ อนคือกราฟที่ประกอบด้วยโหนดและขอบ จะแสดงชุดของออบเจ็กต์แบบกราฟิก โดยมีบางอ็อบเจ็กต์เชื่อมต่อผ่านลิงก์ จุดยอดเป็นวัตถุที่เชื่อมต่อกันในขณะที่ลิงก์เรียกว่าเป็นขอบ การแสดงกราฟสามารถทำได้ผ่านโครงสร้างข้อมูลพจนานุกรมของ python โดยที่คีย์แสดงถึงจุดยอดและค่าต่างๆ แสดงถึงขอบ
การดำเนินการพื้นฐานที่สามารถทำได้บนกราฟ
- แสดงกราฟจุดยอดและขอบ
- การบวกจุดยอด
- การเพิ่มขอบ
- การสร้างกราฟ
ประโยชน์ของกราฟ
- การแสดงกราฟนั้นง่ายต่อการเข้าใจและปฏิบัติตาม
- เป็นโครงสร้างที่ดีในการแสดงความสัมพันธ์ที่เชื่อมโยงกัน เช่น เพื่อนใน Facebook
รูปที่ 4: การแสดงกราฟิกของกราฟ
แหล่งที่มา
ตัวอย่าง
ก. = กราฟ(4)
g.edge(0, 2)
g.edge(1, 3)
g.edge(3, 2)
g.edge(0, 3)
g.__repr__()
เอาท์พุต
รายการที่อยู่ติดกันของจุดยอด 0
หัว -> 3 -> 2
รายการที่อยู่ติดกันของจุดยอด 1
หัว -> 3
รายการที่อยู่ติดกันของจุดยอด2
หัว -> 3 -> 0
รายการที่อยู่ติดกันของจุดยอด 3
หัว -> 0 -> 2 -> 1
5. แฮชแมป
Hashmaps เป็น โครงสร้างข้อมูลหลามที่ ทำดัชนีซึ่ง มีประโยชน์สำหรับการจัดเก็บคู่คีย์-ค่า ข้อมูลที่จัดเก็บไว้ใน hashmaps จะถูกดึงมาผ่านคีย์ที่คำนวณโดยใช้ฟังก์ชัน hash โครงสร้างข้อมูลประเภทนี้มีประโยชน์สำหรับการจัดเก็บข้อมูลนักเรียน รายละเอียดลูกค้า ฯลฯ พจนานุกรมในไพ ธ อนเป็นตัวอย่างของแฮชแมป
ตัวอย่าง
เอาท์พุต
0 -> ก่อน
1 -> วินาที
2 -> ที่สาม
0 -> ก่อน
1 -> วินาที
2 -> ที่สาม
3 -> ที่สี่
0 -> ก่อน
1 -> วินาที
2 -> ที่สาม
ประโยชน์
- เป็นวิธีที่ยืดหยุ่นและเชื่อถือได้มากที่สุดในการดึงข้อมูลมากกว่าโครงสร้างข้อมูลอื่นๆ
6. รายการเชื่อมโยง
เป็นโครงสร้างข้อมูลเชิงเส้นชนิดหนึ่ง โดยพื้นฐานแล้ว มันคือชุดขององค์ประกอบข้อมูลที่เชื่อมต่อเข้าด้วยกันผ่านลิงก์ในไพ ธ อน องค์ประกอบในรายการที่เชื่อมโยงจะเชื่อมต่อผ่านพอยน์เตอร์ โหนดแรกของโครงสร้างข้อมูลนี้เรียกว่าส่วนหัวและโหนดสุดท้ายเรียกว่าส่วนท้าย ดังนั้น รายการเชื่อมโยงประกอบด้วยโหนดที่มีค่า และแต่ละโหนดประกอบด้วยตัวชี้ที่เชื่อมโยงกับโหนดอื่น
ประโยชน์ของลิงค์ลิสต์
- เมื่อเทียบกับอาร์เรย์ที่ได้รับการแก้ไข รายการเชื่อมโยงเป็นรูปแบบการป้อนข้อมูลแบบไดนามิก หน่วยความจำจะถูกบันทึกในขณะที่จัดสรรหน่วยความจำของโหนด ขณะอยู่ในอาร์เรย์ ต้องกำหนดขนาดไว้ล่วงหน้า ซึ่งจะทำให้หน่วยความจำสูญเสียไป
- รายการที่เชื่อมโยงสามารถจัดเก็บไว้ที่ใดก็ได้ในหน่วยความจำ โหนดรายการที่เชื่อมโยงสามารถอัปเดตและย้ายไปยังตำแหน่งอื่นได้
รูปที่ 6: การแสดงกราฟิกของรายการที่เชื่อมโยง
แหล่งที่มา
ตัวอย่าง
เอาท์พุท:
['ที่หนึ่งที่สองที่สาม']
['แรก', 'ที่สอง', 'ที่สาม', 'ที่หก', 'ที่สี่', 'ที่ห้า']
['แรก', 'ที่สาม', 'ที่หก', 'ที่สี่', 'ที่ห้า']
บทสรุป
มีการสำรวจ โครงสร้างข้อมูล ประเภทต่างๆ ใน python แล้ว ไม่ว่าจะเป็นมือใหม่หรือผู้เชี่ยวชาญก็ตาม โครงสร้างข้อมูลและอัลกอริธึมไม่สามารถละเลยได้ ในขณะที่ดำเนินการรูปแบบใดๆ กับข้อมูล แนวคิดของโครงสร้างข้อมูลก็มีบทบาทสำคัญ โครงสร้างข้อมูลช่วยในการจัดเก็บข้อมูลในลักษณะที่เป็นระเบียบ ในขณะที่อัลกอริธึมช่วยในการชี้แนะตลอดการวิเคราะห์ข้อมูล ดังนั้นทั้ง โครงสร้างข้อมูลของ python และอัลกอริธึมจึงช่วยนักวิทยาศาสตร์คอมพิวเตอร์หรือผู้ใช้ในการประมวลผลข้อมูล
หากคุณอยากเรียนรู้เกี่ยวกับโครงสร้างข้อมูล โปรดดูที่ IIIT-B & upGrad's Executive PG Program in Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพด้านการทำงานและเสนอกรณีศึกษาและโครงการมากกว่า 10 รายการ เวิร์กช็อปภาคปฏิบัติจริง การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม 1 -on-1 พร้อมที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
โครงสร้างข้อมูลใดเร็วกว่าใน Python
ในพจนานุกรม การค้นหาทำได้เร็วกว่าเนื่องจาก Python ใช้ตารางแฮชเพื่อใช้งาน หากเราใช้แนวคิด Big O เพื่อแสดงความแตกต่าง พจนานุกรมจะมีความซับซ้อนของเวลาคงที่ O(1) ในขณะที่รายการมีความซับซ้อนของเวลาเชิงเส้น O(n)
ใน Python พจนานุกรมเป็นวิธีที่รวดเร็วที่สุดในการค้นหาข้อมูลที่มีรายการหลายพันรายการบ่อยๆ พจนานุกรมได้รับการปรับให้เหมาะสมที่สุดเพราะเป็นประเภทการแมปในตัวใน Python อย่างไรก็ตาม ในพจนานุกรมและรายการ มีการแลกเปลี่ยนกาล-อวกาศร่วมกัน มันบ่งชี้ว่าในขณะที่เราสามารถลดเวลาที่ต้องใช้สำหรับวิธีการของเรา เราจะต้องใช้พื้นที่หน่วยความจำมากขึ้น
ในรายการ เพื่อให้ได้สิ่งที่คุณต้องการ คุณต้องทำรายการทั้งหมด ในทางกลับกัน พจนานุกรมจะคืนค่าที่คุณกำลังมองหาโดยไม่ต้องดูคีย์ทั้งหมด
อันไหนเร็วกว่าในรายการ Python หรืออาร์เรย์?
โดยทั่วไป รายการ Python มีความยืดหยุ่นอย่างเหลือเชื่อ และอาจเก็บข้อมูลแบบสุ่มที่แตกต่างกันโดยสิ้นเชิง รวมถึงการผนวกเข้ากับเวลาคงที่โดยประมาณอย่างรวดเร็วและคงที่ มันเป็นวิธีที่จะไปหากคุณต้องการลดขนาดและขยายรายการของคุณอย่างรวดเร็วและไม่ลำบาก อย่างไรก็ตาม พวกมันใช้พื้นที่มากกว่าอาร์เรย์ ส่วนหนึ่งเป็นเพราะแต่ละรายการในรายการจำเป็นต้องมีการสร้างอ็อบเจ็กต์ Python แยกต่างหาก
ในทางกลับกัน ประเภท array.array นั้นเป็น wrapper แบบบางรอบๆ อาร์เรย์ C สามารถส่งข้อมูลที่เป็นเนื้อเดียวกันได้เท่านั้น (นั่นคือข้อมูลประเภทเดียวกัน) ดังนั้นหน่วยความจำจึงถูก จำกัด ไว้ที่ sizeof (หนึ่งวัตถุ) * ความยาวไบต์
อะไรคือความแตกต่างระหว่างอาร์เรย์ NumPy และรายการ?
Numpy เป็นแพ็คเกจแกนประมวลผลทางวิทยาศาสตร์ของ Python มันใช้อ็อบเจ็กต์อาร์เรย์หลายมิติขนาดใหญ่รวมถึงยูทิลิตี้สำหรับจัดการพวกมัน อาร์เรย์ numpy คือตารางของค่าประเภทที่เหมือนกันซึ่งสร้างดัชนีโดยทูเพิลของจำนวนเต็มที่ไม่ติดลบ
รายการรวมอยู่ในไลบรารีหลักของ Python รายการคล้ายกับอาร์เรย์ใน Python แต่สามารถปรับขนาดและมีองค์ประกอบประเภทต่างๆ อะไรคือความแตกต่างที่แท้จริงที่นี่? ประสิทธิภาพคือคำตอบ โครงสร้างข้อมูล Numpy มีประสิทธิภาพมากกว่าในแง่ของขนาด ประสิทธิภาพ และการทำงาน