คอลเลกชันใน Python: ทุกสิ่งที่คุณต้องการรู้เกี่ยวกับคอลเลกชัน Python



บล็อกนี้จะกล่าวถึงชนิดข้อมูลคอลเลกชันในตัวใน python พร้อมกับโมดูลคอลเลกชันที่มีโครงสร้างข้อมูลคอลเลกชันพิเศษทั้งหมด

ภาษาการเขียนโปรแกรม Python มีข้อมูลการรวบรวมสี่ประเภท - รายการ , ทูเพิลชุด และ . แต่ ยังมาพร้อมกับโมดูลในตัวที่เรียกว่าคอลเลกชันซึ่งมีโครงสร้างข้อมูลเฉพาะซึ่งโดยพื้นฐานแล้วจะครอบคลุมข้อบกพร่องของข้อมูลทั้งสี่ประเภท ในบล็อกนี้เราจะอธิบายโครงสร้างข้อมูลเฉพาะเหล่านั้นโดยละเอียด ต่อไปนี้เป็นหัวข้อในบล็อกนี้:

คอลเลกชันใน Python คืออะไร?

คอลเลกชันใน python นั้นโดยทั่วไปแล้วประเภทข้อมูลคอนเทนเนอร์ ได้แก่ รายการเซตทูเปิลพจนานุกรม พวกเขามีลักษณะที่แตกต่างกันตามประกาศและการใช้งาน





  • รายการถูกประกาศในวงเล็บเหลี่ยมซึ่งไม่แน่นอนเก็บค่าและองค์ประกอบที่ซ้ำกันได้โดยใช้ดัชนี

  • ทูเปิลถูกเรียงลำดับและไม่เปลี่ยนรูปตามธรรมชาติแม้ว่ารายการที่ซ้ำกันสามารถอยู่ในทูเพิลได้



  • ชุดไม่เรียงลำดับและประกาศในวงเล็บเหลี่ยม ไม่มีการจัดทำดัชนีและไม่มีรายการที่ซ้ำกันเช่นกัน

  • พจนานุกรมมีคู่ค่าคีย์และมีลักษณะที่ไม่แน่นอน เราใช้วงเล็บเหลี่ยมเพื่อประกาศพจนานุกรม

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



โครงสร้างข้อมูลการรวบรวมเฉพาะ

คอลเลกชัน โมดูลใน python ใช้โครงสร้างข้อมูลพิเศษซึ่งเป็นทางเลือกให้กับประเภทข้อมูลคอนเทนเนอร์ในตัวของ python ต่อไปนี้เป็นโครงสร้างข้อมูลเฉพาะในโมดูลคอลเลกชัน

  1. nametuple ()
  2. และ
  3. Chainmap
  4. เคาน์เตอร์
  5. สั่งซื้อ
  6. defaultdict
  7. UserDict
  8. UserList
  9. 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
  1. ฟังก์ชันองค์ประกอบ - ส่งคืนรายการที่มีองค์ประกอบทั้งหมดในตัวนับ
  2. Most_common () - ส่งคืนรายการที่เรียงลำดับพร้อมจำนวนของแต่ละองค์ประกอบในตัวนับ
  3. ลบ () - ใช้วัตถุที่ทำซ้ำได้เป็นอาร์กิวเมนต์และหักจำนวนองค์ประกอบในตัวนับ

สั่งซื้อ

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

มันทำงานอย่างไร?

จากคอลเลกชันนำเข้า 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

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