March 12, 2012

Python: โครงสร้างข้อมูลชุดแบบอื่นๆ จาก collections

นอกจาก list, dictionary, tuple และ set แล้ว ยังมีโครงสร้างข้อมูลชุดแบบอื่นๆ เช่น

deque ที่ทำความเร็วได้ดีกว่าการใช้ list.append(elem) และ list.pop(0) สร้างคิวเอง

อีกประเด็ตที่น่าสนใจคือ deque สามารถจำกัดขนาดได้ครับ

ระวังไว้หน่อยตอนที่เพิ่มค่าเข้าไปจนล้น มันไม่ได้คืนตัวที่โดนปัดทิ้งให้นะ



defaultdict ที่จะสร้างค่าเริ่มต้นให้เสมอเมื่อเรียกใช้ index ตัวที่ยังไม่มีใน dict

และจะเห็นความง่ายของมันเมื่อสร้าง dict ที่เก็บ list ของ key ที่ซ้ำกันได้



namedtuple สำหรับสร้าง tuple ที่มีชื่อสำหรับเรียกแทนตัวแปรต่างๆ (หรืออาจมองว่ามันเป็น struct ที่สามารถเรียกตำแหน่งได้จากทั้งตำแหน่งและชื่อก็ได้)

สังเกตความสะดวกในการประกาศตัวแปรชุด xyz นะครับ

4 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. namedtuple ดูใช้ง่ายดี อ่านโค้ดง่ายขึ้นด้วย (ถ้าใช้ชื่อเรียก แทนที่จะใช้ตำแหน่ง)

    อ้อ โพสต์นี้ลืมใส่ Label นะครับ

    ReplyDelete
    Replies
    1. ขอเสียหลักๆ สำหรับท่านที่ไม่ได้มาจากสาย functional คือมันเป็น tuple ไม่สามารถเปลี่ยนค่าได้นะครับ ;)

      Delete
    2. อันนี้ก็ต้องเลือกตัวแปรให้เหมาะสมกับงานที่จะใช้ เหมือนกับที่ตอนที่เลือก int, float หรือ decimal นั่นแหละครับ

      Delete