ภาษาการเขียนโปรแกรม Python มีข้อมูลการรวบรวมสี่ประเภท - รายการ , ทูเพิลชุด และ . แต่ ยังมาพร้อมกับโมดูลในตัวที่เรียกว่าคอลเลกชันซึ่งมีโครงสร้างข้อมูลเฉพาะซึ่งโดยพื้นฐานแล้วจะครอบคลุมข้อบกพร่องของข้อมูลทั้งสี่ประเภท ในบล็อกนี้เราจะอธิบายโครงสร้างข้อมูลเฉพาะเหล่านั้นโดยละเอียด ต่อไปนี้เป็นหัวข้อในบล็อกนี้:
คอลเลกชันใน Python คืออะไร?
คอลเลกชันใน python นั้นโดยทั่วไปแล้วประเภทข้อมูลคอนเทนเนอร์ ได้แก่ รายการเซตทูเปิลพจนานุกรม พวกเขามีลักษณะที่แตกต่างกันตามประกาศและการใช้งาน
รายการถูกประกาศในวงเล็บเหลี่ยมซึ่งไม่แน่นอนเก็บค่าและองค์ประกอบที่ซ้ำกันได้โดยใช้ดัชนี
ทูเปิลถูกเรียงลำดับและไม่เปลี่ยนรูปตามธรรมชาติแม้ว่ารายการที่ซ้ำกันสามารถอยู่ในทูเพิลได้
ชุดไม่เรียงลำดับและประกาศในวงเล็บเหลี่ยม ไม่มีการจัดทำดัชนีและไม่มีรายการที่ซ้ำกันเช่นกัน
พจนานุกรมมีคู่ค่าคีย์และมีลักษณะที่ไม่แน่นอน เราใช้วงเล็บเหลี่ยมเพื่อประกาศพจนานุกรม
นี่คือประเภทข้อมูลคอนเทนเนอร์ในตัวสำหรับวัตถุประสงค์ทั่วไปของ python แต่อย่างที่เราทราบกันดีว่า python มักจะมีสิ่งพิเศษเล็ก ๆ น้อย ๆ มานำเสนอเสมอ มันมาพร้อมกับโมดูล python ชื่อคอลเลกชันซึ่งมีโครงสร้างข้อมูลเฉพาะ
โครงสร้างข้อมูลการรวบรวมเฉพาะ
คอลเลกชัน โมดูลใน python ใช้โครงสร้างข้อมูลพิเศษซึ่งเป็นทางเลือกให้กับประเภทข้อมูลคอนเทนเนอร์ในตัวของ python ต่อไปนี้เป็นโครงสร้างข้อมูลเฉพาะในโมดูลคอลเลกชัน
- nametuple ()
- และ
- Chainmap
- เคาน์เตอร์
- สั่งซื้อ
- defaultdict
- UserDict
- UserList
- UserString
nametuple ()
จะส่งคืนทูเปิลพร้อมรายการที่มีชื่อซึ่งหมายความว่าจะมีชื่อที่กำหนดให้กับแต่ละค่าในทูเปิล มันเอาชนะปัญหาในการเข้าถึงองค์ประกอบโดยใช้ค่าดัชนี ด้วย namedtuple () การเข้าถึงค่าเหล่านี้จะง่ายขึ้นเนื่องจากคุณไม่จำเป็นต้องจำค่าดัชนีเพื่อรับองค์ประกอบเฉพาะ
มันทำงานอย่างไร?
ก่อนอื่นคุณต้องนำเข้าโมดูลคอลเลกชันโดยไม่จำเป็นต้องติดตั้ง
จากคอลเลกชันนำเข้า namedtuple
ดูรหัสต่อไปนี้เพื่อทำความเข้าใจว่าคุณสามารถใช้ namedtuple ได้อย่างไร
a = namedtuple ('courses', 'name, tech') s = a ('data science', 'python') print (s) # ผลลัพธ์จะเป็นหลักสูตร (name = 'python', tech = 'python')
วิธีการสร้าง Nametuple โดยใช้รายการ?
s._make (['data science', 'python']) # ผลลัพธ์จะเหมือนเดิม
และ
deque ออกเสียงว่า 'สำรับ' เป็นรายการที่ปรับให้เหมาะสมเพื่อทำการแทรกและลบได้อย่างง่ายดาย
มันทำงานอย่างไร?
# การสร้าง deque จากคอลเลกชันนำเข้า deque a = ['d', 'u', 'r', 'e', 'k'] a1 = deque (a) print (a1) # ผลลัพธ์จะเป็น deque ([' d ',' u ',' r ',' e ',' k '])
ตอนนี้มาดูวิธีที่เราจะแทรกและลบรายการออกจาก deque
a1.append ('a') พิมพ์ (a1) # ผลลัพธ์จะเป็น deque (['d', 'u', 'r', 'e', 'k', 'a']) a1.appendleft (' e ') พิมพ์ (a1) # ผลลัพธ์จะเป็น deque ([' e ',' d ',' u ',' r ',' e ',' k ',' a '])
ตามที่ควรจะเห็นได้ชัดการใส่ส่วนประกอบได้รับการปรับปรุงโดยใช้ deque และคุณสามารถลบส่วนประกอบได้เช่นกัน
a1.pop () พิมพ์ (a1) # ผลลัพธ์จะเป็น deque (['e', 'd', 'u', 'r', 'e', 'k']) a1.popleft () พิมพ์ (a1 ) # ผลลัพธ์จะเป็น deque (['d', 'u', 'r', 'e', 'k'])
เช่นเดียวกับชนิดข้อมูลในตัวมีการดำเนินการอื่น ๆ อีกมากมายที่เราสามารถดำเนินการกับ deque ได้ อย่างการนับธาตุหรือการล้าง deque เป็นต้น
ChainMap
เป็นพจนานุกรมเหมือนคลาสที่สามารถสร้างมุมมองเดียวของการแมปหลาย ๆ โดยทั่วไปจะส่งคืนรายการพจนานุกรมอื่น ๆ สมมติว่าคุณมีพจนานุกรมสองพจนานุกรมที่มีคู่ค่าคีย์หลายคู่ในกรณีนี้ ChainMap จะสร้างรายการเดียวโดยมีทั้งพจนานุกรมอยู่ในนั้น
มันทำงานอย่างไร?
จากคอลเลกชันนำเข้า ChainMap a = {1: 'edureka', 2: 'python'} b = {3: 'data science', 4: 'Machine learning'} c = ChainMap (a, b) print (c) #the ผลลัพธ์จะเป็น ChainMap [{1: 'edureka', 2: 'python'}, {3: 'data science', 4: 'Machine learning'}]
ในการเข้าถึงหรือแทรกองค์ประกอบเราใช้คีย์เป็นดัชนี แต่ในการเพิ่มพจนานุกรมใหม่ใน ChainMap เราใช้แนวทางต่อไปนี้
a1 = {5: 'AI', 6: 'neural networks'} c1 = c.new_child (a1) print (c1) # ผลลัพธ์จะเป็น ChainMap [{1: 'edureka', 2: 'python'}, { 3: 'data science', 4: 'Machine Learning'}, {5: 'AI', 6: 'neural networks'}]
เคาน์เตอร์
เป็นคลาสย่อยของพจนานุกรมที่ใช้ในการนับอ็อบเจ็กต์ที่ล้างทำความสะอาดได้
มันทำงานอย่างไร?
จากคอลเลกชันนำเข้าตัวนับ a = [1,1,1,1,2,3,3,4,3,3,4] c = ตัวนับ (a) พิมพ์ (c) # ผลลัพธ์จะเป็นตัวนับ = ({1: 4, 2: 1, 3: 4, 4: 2})
นอกจากการดำเนินการที่คุณสามารถทำได้บนตัวนับพจนานุกรมแล้วยังมีการดำเนินการอีก 3 อย่างที่เราสามารถทำได้
ตั้งค่าเส้นทางคลาสใน linux
- ฟังก์ชันองค์ประกอบ - ส่งคืนรายการที่มีองค์ประกอบทั้งหมดในตัวนับ
- Most_common () - ส่งคืนรายการที่เรียงลำดับพร้อมจำนวนของแต่ละองค์ประกอบในตัวนับ
- ลบ () - ใช้วัตถุที่ทำซ้ำได้เป็นอาร์กิวเมนต์และหักจำนวนองค์ประกอบในตัวนับ
สั่งซื้อ
เป็นคลาสย่อยของพจนานุกรมซึ่งจะจดจำลำดับที่เพิ่มรายการ โดยพื้นฐานแล้วแม้ว่าคุณจะเปลี่ยนค่าของคีย์ แต่ตำแหน่งจะไม่เปลี่ยนแปลงเนื่องจากลำดับที่แทรกในพจนานุกรม
มันทำงานอย่างไร?
จากคอลเลกชันนำเข้า OrderDict od = OrderDict () od [1] = 'e' od [2] = 'd' od [3] = 'u' od [4] = 'r' od [5] = 'e' od [6] = 'k' from [7] = 'a' print (from) # ผลลัพธ์จะถูก OrderDict [(1, 'e'), (2, 'd'), (3, 'u'), (4, 'r'), (5, 'e'), (6, 'k'), (7, 'a')]
ไม่สำคัญว่าค่าใดจะถูกแทรกลงในพจนานุกรม OrderDict จะจดจำลำดับที่ถูกแทรกและรับเอาต์พุตตามนั้น แม้ว่าเราจะเปลี่ยนค่าของคีย์ก็ตาม สมมติว่าถ้าเราเปลี่ยนค่าคีย์ 4 เป็น 8 ลำดับจะไม่เปลี่ยนแปลงในผลลัพธ์
defaultdict
เป็นคลาสย่อยของพจนานุกรมที่เรียกใช้ฟังก์ชันโรงงานเพื่อจัดหาค่าที่ขาดหายไป โดยทั่วไปจะไม่เกิดข้อผิดพลาดใด ๆ เมื่อมีการเรียกค่าคีย์ที่ขาดหายไปในพจนานุกรม
มันทำงานอย่างไร?
จากคอลเลกชันนำเข้า defaultdict d = defaultdict (int) # เราต้องระบุประเภทด้วย d [1] = 'edureka' d [2] = 'python' print (d [3]) #it จะให้ผลลัพธ์เป็น 0 แทน keyerror
UserDict
คลาสนี้ทำหน้าที่เป็นเครื่องห่อหุ้มรอบอ็อบเจ็กต์พจนานุกรม ความจำเป็นสำหรับคลาสนี้มาจากความจำเป็นในการคลาสย่อยโดยตรงจาก dict การทำงานกับคลาสนี้จะง่ายขึ้นเนื่องจากพจนานุกรมพื้นฐานกลายเป็นแอตทริบิวต์
class collection.UserDict ([initialdata])
คลาสนี้จำลองพจนานุกรม เนื้อหาของอินสแตนซ์จะถูกเก็บไว้ในพจนานุกรมทั่วไปซึ่งสามารถเข้าถึงได้ด้วยแอตทริบิวต์ 'data' ของคลาส UserDict ไม่มีการเก็บการอ้างอิงของข้อมูลเริ่มต้นเพื่อใช้เพื่อวัตถุประสงค์อื่น
UserList
คลาสนี้ทำหน้าที่เหมือน Wrapper รอบ ๆ วัตถุในรายการ เป็นคลาสพื้นฐานที่มีประโยชน์สำหรับรายการอื่น ๆ เช่นคลาสที่สามารถสืบทอดจากพวกเขาและแทนที่เมธอดที่มีอยู่หรือแม้แต่เพิ่มใหม่น้อยลงก็ได้เช่นกัน
ความจำเป็นสำหรับคลาสนี้มาจากความจำเป็นในการคลาสย่อยโดยตรงจากรายการ การทำงานกับคลาสนี้จะง่ายขึ้นเนื่องจากรายการพื้นฐานกลายเป็นแอตทริบิวต์
class collection.UserList ([รายการ])
เป็นคลาสที่จำลองรายการ เนื้อหาของอินสแตนซ์จะถูกเก็บไว้ในรายการตามปกติ คลาสย่อยของรายการนั้นขึ้นอยู่กับการเสนอคอนสตรัคเตอร์ซึ่งสามารถเรียกได้โดยไม่ต้องมีข้อโต้แย้งใด ๆ
ในบล็อกนี้เราได้เรียนรู้เกี่ยวกับโครงสร้างข้อมูลพิเศษที่มาพร้อมกับโมดูลคอลเลกชันใน python การเพิ่มประสิทธิภาพนำไปสู่ประสิทธิภาพที่ดีขึ้นและผลลัพธ์ที่เพิ่มขึ้น เช่นเดียวกันกับอาชีพและทักษะของเราเองเช่นกัน หากคุณต้องการเริ่มต้นการเรียนรู้และเพิ่มประสิทธิภาพวิธีการรับรู้การเขียนโปรแกรมให้ลงทะเบียนใน edureka’s และปลดปล่อยความเป็นไปได้ที่ไม่มีที่สิ้นสุดด้วย python
มีข้อสงสัยหรือไม่? พูดถึงพวกเขาในความคิดเห็นแล้วเราจะติดต่อกลับโดยเร็วที่สุด