ความแตกต่างระหว่าง List และ Tuple คืออะไร?
เผยแพร่แล้ว: 2021-11-28Tuple และ 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 ใช้ที่ไหนในชีวิตจริง?
คุณสามารถสร้างรายการเพื่อจัดเก็บขั้นตอนที่จำเป็นในการปรุงอาหารจานใดจานหนึ่งโดยใช้สูตรเฉพาะ รายการนี้เกี่ยวข้องกับการเข้าถึงข้อมูลตามลำดับ จึงสามารถเข้าสู่ขั้นตอนต่างๆ ได้ตามลำดับ ในทางกลับกัน ทูเพิลสามารถใช้เก็บข้อมูลอย่างเช่น ลองจิจูด หรือละติจูดของที่อยู่อาศัยของคุณได้ ทั้งนี้เนื่องจากทูเพิลคือชุดของข้อมูลที่กำหนดไว้ล่วงหน้า คุณยังสามารถใช้ทูเพิลตัวเดียวกันเพื่อจัดเก็บพิกัดตำแหน่งของสถานที่อื่นๆ