ความแตกต่างระหว่าง List และ Tuple คืออะไร?

เผยแพร่แล้ว: 2021-11-28

Tuple และ list เป็นโครงสร้างข้อมูลประเภทหนึ่งที่ใช้ใน Python แสดงรายการข้อมูลในตัวแปรเดียวโดยใช้วงเล็บเหลี่ยม ขณะที่ Tuples เก็บข้อมูลไว้ในตัวแปรเดียวโดยใช้วงเล็บ โครงสร้างทั้งสองใช้สำหรับเก็บค่าและอ็อบเจ็กต์หลายรายการ

บทความนี้จะเจาะลึกถึงความแตกต่างที่สำคัญระหว่าง list และ tuple และสำรวจกรณีการใช้งาน แต่ก่อนอื่น มาดูความคล้ายคลึงกันหลักระหว่างกันก่อน:

  • คุณสามารถจัดเก็บรายการและอ็อบเจ็กต์ของประเภทข้อมูลทั้งหมดทั้งในทูเพิลและรายการ
  • ทั้ง tuple และ list อนุญาตให้เข้าถึงข้อมูลโดยใช้ดัชนีที่เกี่ยวข้อง
  • ข้อมูลทั้งสองชนิดนี้สามารถคอมไพล์และแค็ตตาล็อกรายการข้อมูลได้หลากหลาย

สารบัญ

Python Tuple เทียบกับรายการ

1. ความแตกต่างของไวยากรณ์

การประกาศรายการและทูเพิลนั้นแตกต่างกันอย่างสม่ำเสมอใน Python รายการถูกประกาศโดยใช้เครื่องหมายวงเล็บ '[]' ในขณะที่การประกาศของ tuples จะทำโดยใช้ '()'

ต่อไปนี้คือตัวอย่างเพื่อให้เข้าใจวิธีการประกาศรายการและสิ่งอันดับใน Python ได้ดีขึ้น

list_num = [7,8,9,10]

tup_num = (10,11,13,14)

พิมพ์(list_num)

พิมพ์(tup_num)

ผลลัพธ์ของลำดับนี้จะเป็น

[7,8,9,10]

(10,11,13,14)

ในตัวอย่างนี้ ตัวแปรที่ชื่อ list_num ถูกกำหนดให้รองรับตัวเลขตั้งแต่ 7 ถึง 10 เรายังเห็นว่าผลลัพธ์อยู่ในวงเล็บเหลี่ยม อย่างไรก็ตาม ตัวแปรที่กำหนดเป็น tup_num และเก็บตัวเลขตั้งแต่ 10 ถึง 14 จะแสดงผลลัพธ์โดยใช้วงเล็บ

Python ใช้ฟังก์ชัน type() ที่ช่วยให้เราเข้าใจประเภทของรายการที่สร้างขึ้น

พิมพ์(ประเภท(tup_num))

พิมพ์(ประเภท(list_num))

เอาท์พุท:

<คลาส 'ทูเพิล'>

<คลาส 'list'>

2. การกลายพันธุ์ (เปลี่ยนแปลงได้และไม่เปลี่ยนรูป)

ทูเปิลส์และรายการต่างขัดแย้งกันเมื่อพูดถึงความเปลี่ยนแปลงได้ Tuples เป็นโครงสร้างที่ไม่เปลี่ยนรูปซึ่งไม่สามารถแก้ไขหรือเปลี่ยนแปลงได้หลังจากสร้างขึ้นแล้ว ในทางกลับกัน รายการเป็นโครงสร้างที่เปลี่ยนแปลงได้ซึ่งสามารถเปลี่ยนแปลงหรือแก้ไขได้อย่างง่ายดายหลังจากการสร้าง

มีเพียงทูเพิลเท่านั้นที่สามารถใช้เป็นกุญแจสู่พจนานุกรมได้เนื่องจากลักษณะที่ไม่เปลี่ยนรูปของพวกมัน รายการไม่สามารถใช้เป็นกุญแจได้เมื่อจำเป็น

3. การเปลี่ยนวัตถุ (List vs Tuple)

ให้เราค้นหาว่าจะเกิดอะไรขึ้นเมื่อมีการพยายามทำการเปลี่ยนแปลงในรายการ

ชื่อ = [อเล็กซ์,ริค,มาร์ติน]

ชื่อ [0] = “ร็อกซี่”

หมายเหตุ : องค์ประกอบแรกจะเรียกว่า 0 เสมอ ไม่ใช่ 1

ตอนนี้เรามาดูกันว่าผลลัพธ์จะเป็นอย่างไรหลังจากคำสั่งต่อไปนี้:

>>>ชื่อ

เอาท์พุท:

[ร็อกซี่ ริค มาร์ติน]

ผลลัพธ์แสดงให้เห็นว่ารายการแรกในรายการเปลี่ยนแปลงไปอย่างไร

ตอนนี้เรามาดูกันว่าผลลัพธ์จะเป็นอย่างไรถ้าใช้ทูเพิล

ชื่อ = (อเล็กซ์, ริค, มาร์ติน)

เมื่อรายการในทูเพิลถูกเปลี่ยนโดยใช้

ชื่อ(0) = “ร็อกซี่”

ผลลัพธ์จะเป็น:

TypeError: วัตถุ 'tuple' ไม่รองรับการกำหนดรายการ

ซึ่งหมายความว่าโครงสร้างข้อมูลทูเพิลไม่สนับสนุนอ็อบเจ็กต์ที่มีการเปลี่ยนแปลงในภายหลัง ดังนั้น เราสามารถสรุปได้ว่าเฉพาะรายการเท่านั้นที่สามารถแก้ไขได้และไม่สามารถแก้ไขทูเพิลได้

4. สำเนาเทียบกับการใช้ซ้ำ

ไม่สามารถคัดลอกสิ่งอันดับ เหตุผลที่นี่คือธรรมชาติที่ไม่เปลี่ยนรูปของสิ่งอันดับ ตัวอย่างเช่น หากคุณเรียกใช้ tuple (tup_name) คุณจะเห็นว่ามันได้รับการคืนค่าเป็นตัวเอง

ตัวอย่าง:

ชื่อ = ('allen”,”siri”, “Michaela”)

copyNames = ทูเพิล (ชื่อ)

พิมพ์ (ชื่อคือ copyNames)

ผลลัพธ์ที่นี่จะเป็น – “จริง”

ในทางกลับกัน หากคุณพยายามทำเช่นเดียวกันกับรายการ (ดังแสดงในตัวอย่าง):

ตัวอย่าง:

ชื่อ = ["อัลเลน", "ศิริ" ""ไมเคิลลา"]

copyNames = รายการ (ชื่อ)

พิมพ์ (ชื่อคือ copyNames)

ผลลัพธ์จะแสดงเป็น "เท็จ"

คุณจะต้องคัดลอกและวางชื่อทั้งหมดลงในรายการใหม่เพื่อให้ได้ผลลัพธ์ที่แท้จริง

5. Python Tuple เทียบกับรายการ | ความแตกต่างของขนาด

เนื่องจากลักษณะที่ไม่เปลี่ยนรูปของ tuple Python จึงจัดสรรหน่วยความจำ tuple ในรูปแบบของบล็อกขนาดใหญ่ที่มีโอเวอร์เฮดที่ค่อนข้างต่ำ สำหรับรายการ Python จะให้บล็อกหน่วยความจำที่มีขนาดเล็กกว่าเท่านั้น ด้วยเหตุนี้ ทูเพิลจึงมีหน่วยความจำเพียงเล็กน้อยเมื่อเทียบกับรายการ อย่างไรก็ตาม นี่หมายความว่า tuples ใช้งานได้เร็วกว่ารายการเมื่อมีหลายรายการที่เกี่ยวข้อง

6. ต่างกันกับเป็นเนื้อเดียวกัน

ทูเปิลส์สามารถเก็บองค์ประกอบประเภทต่างๆ ที่ไม่เหมือนกันได้ ในทางตรงกันข้าม รายการสามารถจัดเก็บคุณลักษณะหรือข้อมูลของตัวแปรเดียวกันที่เป็นเนื้อเดียวกันได้

อย่างไรก็ตาม นี่เป็นเพียงความแตกต่างเชิงความหมายเท่านั้น ตัวอย่างเช่น รายการสามารถจัดเก็บข้อมูลประเภทต่างๆ ได้ และทูเพิลยังสามารถจัดเก็บข้อมูลประเภทเดียวกันได้

ตัวอย่าง:

list_elements = ['อัลเลน', 20, 'แมรี่']

tuple_elements = ('อัลเลน', “แมรี่”, 'อเล็กซ์')

โค้ดจะทำงานได้อย่างราบรื่น แม้ว่ารายการจะมีทั้งตัวเลขและสตริงผสมกัน

7. ความแตกต่างของความยาว

รายการและทูเพิลยังแตกต่างกันไปตามความยาวและขนาด แม้ว่าสิ่งอันดับจะแตกต่างกันไปตามความยาว ความยาวของสิ่งอันดับจะคงที่ ดังนั้น ขนาดของรายการสามารถเปลี่ยนแปลงได้ตลอดเวลา ไม่เหมือนกับความยาวของสิ่งอันดับที่ยังคงคงที่เมื่อกำหนดไว้

ตัวอย่าง:

list_names = ['อัลเลน', 'แมรี่', 'อเล็กซ์']

list_names.append (“roxy”)

พิมพ์ (list_names)

เอาท์พุท:

['อัลเลน' 'แมรี่' 'อเล็กซ์' 'ร็อกซี่']

ผลลัพธ์ที่แน่นอนสามารถทำได้โดยใช้ฟังก์ชัน insert() แทนฟังก์ชัน append() เมื่อแสดงรายการ

อย่างไรก็ตาม โครงสร้างข้อมูลทูเพิลไม่ได้ให้วิธีการใดๆ แก่เราในการเปลี่ยนขนาด

8. ใช้กรณี

ภายใต้สถานการณ์ที่แตกต่างกัน โครงสร้างข้อมูลอย่างน้อยหนึ่งโครงสร้างทำงานได้ดี โดยปกติจะขึ้นอยู่กับโปรแกรมเมอร์ของโปรแกรมที่ใช้โครงสร้างข้อมูล โครงสร้างข้อมูลถูกเลือกขึ้นอยู่กับว่ารายการข้อมูลจะถูกเขียนใหม่ในอนาคตหรือไม่

ทูเปิลมีความสำคัญมากกว่ามากเมื่อเทียบกับโครงสร้างข้อมูลเมื่อเปรียบเทียบกับรายการ เนื่องจาก:

  • การใช้ทูเพิลแทนรายการสามารถแจ้งให้ผู้เข้ารหัสหรือล่ามข้อมูลทราบไม่ให้เปลี่ยนแปลงข้อมูล
  • คุณยังสามารถกู้คืนข้อมูลโดยไม่ต้องใช้คีย์โดยใช้ทูเพิล
  • Tuples เทียบเท่ากับพจนานุกรมใน Python
  • Tuples ที่จัดเก็บไว้ในรายการนั้นอ่านง่ายมาก

ธรรมชาติที่ไม่เปลี่ยนรูปและแฮชได้ของ tuples ทำให้พวกเขามาแทนที่พจนานุกรมได้อย่างสมบูรณ์แบบ ในทางกลับกัน คุณไม่สามารถใช้รายการเพื่อแทนที่พจนานุกรมเนื่องจากไม่สนับสนุนฟังก์ชัน _hash_()

ตัวอย่าง:

key_val= {('alex', 'brave'):124} #ถูกต้อง

key_val = {['alex', 'brave']:124} #Invalid

9. รายการทำรังและทูเพิล

Tuples และรายการสามารถจัดเก็บไว้ด้วยกัน ทูเพิลที่ซ้อนกันสามารถจุทูเพิลได้มากกว่า ในทำนองเดียวกัน รายการที่ซ้อนกันสามารถมีรายการเพิ่มเติมได้

10. การดีบัก

Tuples สามารถดีบักได้ง่ายกว่ามากในโปรเจ็กต์ที่กว้างขวางกว่าเมื่อเปรียบเทียบกับรายการ นี่เป็นเพราะลักษณะที่ไม่เปลี่ยนรูปของทูเพิล อย่างไรก็ตาม เมื่อมีข้อมูลจำนวนน้อยกว่ามาก ขอแนะนำให้ใช้รายการ นอกจากนี้ Tuple ยังง่ายต่อการติดตามเนื่องจากไม่สามารถเปลี่ยนแปลงได้ ไม่เหมือนรายการที่มีข้อบกพร่องในการติดตาม

11. หน้าที่และการใช้งาน

Python มีฟังก์ชันที่เป็นประโยชน์บางอย่างที่สามารถนำไปใช้กับสิ่งอันดับและรายการ เช่น sorted, sum, all, min, max, lean เป็นต้น

เมื่อเกี่ยวข้องกับการดำเนินการ เราอาจพบความคล้ายคลึงกันมากมายในรายการและทูเพิล อย่างไรก็ตาม รายการมีฟังก์ชันพิเศษบางอย่างที่ไม่มีอยู่ในทูเพิล สิ่งเหล่านี้ส่วนใหญ่เป็นการดำเนินการป๊อปและแทรกควบคู่ไปกับการลบและจัดเก็บรายการ

ประเด็นที่สำคัญ

  • Tuples มีฟังก์ชันน้อยกว่ารายการ
  • โครงสร้างของทูเพิลนั้นไม่เปลี่ยนรูป ในขณะที่โครงสร้างของรายการนั้นไม่แน่นอน
  • Tuples มีความยาวคงที่ ในขณะที่ความยาวของรายการอาจแตกต่างกันไป
  • ไวยากรณ์ของรายการแสดงด้วยเครื่องหมายวงเล็บ "[]" ในขณะที่ไวยากรณ์ของ tuples จะแสดงในรูปของ "()" วงเล็บ
  • Tuples ใช้หน่วยความจำน้อยกว่าเมื่อเปรียบเทียบกับรายการ
  • โครงสร้างข้อมูลทูเพิลจะดีที่สุดเมื่อมีการเข้าถึงองค์ประกอบที่เกี่ยวข้อง
  • รายการฟังก์ชันดีกว่าในการดำเนินการเฉพาะของการลบและการแทรก
  • การวนซ้ำที่เกี่ยวข้องกับ tuples จะเร็วกว่าที่เกี่ยวข้องกับรายการ
  • รายการอาจมีเมธอดที่สร้างขึ้นหลายวิธี ในขณะที่ทูเพิลไม่มี

เรียนรู้รายละเอียดเกี่ยวกับสาระสำคัญของ Python และแนวคิดขั้นสูงผ่าน วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ข้อมูล 18 เดือนของ upGrad โครงการร่วมกับ Liverpool John Moores University และ IIIT Bangalore ด้วยคณาจารย์ชั้นนำในอุตสาหกรรมที่พร้อมให้คุณใช้งาน สื่อการเรียนรู้กว่า 500 ชั่วโมง และชั้นเรียนการแก้ปัญหาข้อสงสัย นักศึกษามีโอกาสที่จะเชี่ยวชาญ Python และความรู้พื้นฐานด้านวิทยาศาสตร์ข้อมูลอื่น ๆ เพื่อขับเคลื่อนอาชีพของพวกเขาให้สอดคล้องกัน นอกจากนี้ โปรแกรมนี้ยังช่วยพัฒนาความสามารถในภาษาและเครื่องมือต่างๆ กว่า 14 ภาษา เช่น Tableau, MySQL, Excel, MongoDB และอื่นๆ

ดังนั้นอย่าลังเล ติดต่อเราวันนี้!

เมื่อใดควรใช้ Tuples หรือ Lists

หากคุณต้องการให้รายการข้อมูลของคุณเป็นแบบอ่านอย่างเดียว คุณควรใช้สิ่งอันดับ ข้อมูลยังคงเป็นค่าคงที่ในทูเพิล เนื่องจากมีการรับประกันว่าจะมีข้อมูลที่ไม่มีวันเปลี่ยนแปลง

อย่างไรก็ตาม รายการเปลี่ยนแปลงได้มาก ดังนั้นข้อมูลในนั้นจึงสามารถเปลี่ยนแปลงได้เสมอ การย้าย สลับ ลบ และเพิ่มรายการไปยังรายการมีความยืดหยุ่นมาก เหมาะที่สุดเมื่อข้อมูลต้องมีการแก้ไขในระยะหลังของวงจรโปรแกรม

ทูเพิลเร็วกว่าเมื่อเทียบกับรายการหรือไม่

ใช่ การสร้างทูเพิลใช้เวลาน้อยกว่าการสร้างรายการมาก เมื่อมีการสร้างรายการ จะต้องเข้าถึงบล็อกหน่วยความจำมากกว่าหนึ่งบล็อก เป็นเพราะองค์ประกอบใน tuples ไม่สามารถลบและแทนที่ได้ ในขณะที่คุณสมบัติในรายการสามารถเปลี่ยนแปลงได้หลายครั้งในระหว่างรอบโปรแกรม

tuples และ list ใช้ที่ไหนในชีวิตจริง?

คุณสามารถสร้างรายการเพื่อจัดเก็บขั้นตอนที่จำเป็นในการปรุงอาหารจานใดจานหนึ่งโดยใช้สูตรเฉพาะ รายการนี้เกี่ยวข้องกับการเข้าถึงข้อมูลตามลำดับ จึงสามารถเข้าสู่ขั้นตอนต่างๆ ได้ตามลำดับ ในทางกลับกัน ทูเพิลสามารถใช้เก็บข้อมูลอย่างเช่น ลองจิจูด หรือละติจูดของที่อยู่อาศัยของคุณได้ ทั้งนี้เนื่องจากทูเพิลคือชุดของข้อมูลที่กำหนดไว้ล่วงหน้า คุณยังสามารถใช้ทูเพิลตัวเดียวกันเพื่อจัดเก็บพิกัดตำแหน่งของสถานที่อื่นๆ