โครงสร้างข้อมูลใน 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 มีประสิทธิภาพมากกว่าในแง่ของขนาด ประสิทธิภาพ และการทำงาน