วันอาทิตย์ที่ 26 กุมภาพันธ์ พ.ศ. 2560

บทที่ 3 การจัดการข้อมูลและข้อความ

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

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

        1. การสร้างลิสต์
การสร้างลิสต์ด้วยวิธีการง่าย ๆ คือ การกำหนดชื่อลิสต์ และมีเครื่องหมายเท่ากับ (=) จากนั้นใช้เครื่องหมายวงเล็บเหลี่ยมเปิด ([) แล้วมีข้อมูลที่ต้องการเก็บอยู่ในเครื่องหมายวงเล็บเหลี่ยมเปิดและปิด ถ้าต้องการเก็บข้อมูลที่เป็นตัวเลขใช้เพียงเครื่องหมายจุลภาค (,) คั่นกลางระหว่างข้อมูล แต่ถ้าเป็นข้อมูลชนิดสายอักขระให้พิมพ์ไว้ในเครื่องหมายอัญประกาศ("") ดังตัวอย่าง

>>> yearList = [2550, 2551, 2552, 2553, 2554]
>>> langList = ["Python", "Visual Basic", "C#", "Java"]
>>> mixList = [1, 2, 3, "four", 5]
>>> subList = ["Python", "Programming","Language",["This is", "a sublist"]]
>>> listList = [yearList, langList, mixList, subList]
 ภาพที่ 3.1  แสดงคำสั่งการสร้างลิสต์ 

จากภาพที่ 3.1 เป็นการใช้คำสั่งเพื่อประกาศสร้างลิสต์ที่มีจำนวน 5 ตัวแปร ตัวแปร ที่ชื่อ yearList เก็บข้อมูลชนิดตัวเลข  ตัวแปร langList เก็บข้อมูลสายอักขระ ให้พิจารณาดูข้อมูลที่อยู่ในเครื่องหมายอัญประกาศ ตัวแปร mixList เก็บข้อมูลผสมระหว่างตัวเลขและสายอักขระ ตัวแปร subList เก็บข้อมูลที่เป็นลิสต์หลักและลิสต์ย่อย ให้สังเกตที่เครื่องหมายวงเล็บเหลี่ยมที่เป็น ลิสต์ย่อย  และตัวแปร สุดท้ายชื่อ listList  เก็บตัวแปรของลิสต์ทั้งหมด โดยที่ชื่อลิสต์ภายในตัวแปร ไม่ต้องมีเครื่องหมายอัญประกาศ 

        2. การเข้าถึงลิสต์
                วิธีการเข้าถึงข้อมูลในลิสต์มีวิธีการง่าย ๆ ตามหลักการของอะเรย์ที่ใช้ดัชนีชี้ตำแหน่งที่อยู่ของข้อมูลโดยเริ่มต้นจากข้อมูลลำดับแรกที่ 0 ซึ่งจากตัวอย่างการประกาศตัวแปร yearList จากภาพที่ 3.1 สามารถเข้าถึงข้อมูลลำดับแรกได้ด้วยคำสั่ง yearList[0]  และลำดับถัดไปจะเป็น yearList[1]  yearList[2] ต่อไปเรื่อย ๆ นอกจากนี้ภาษาไพธอนยังมีวิธีการเข้าถึงข้อมูลมาจากตำแหน่งหลังสุดไปหน้าสุดด้วยการใช้ดัชนีที่เป็นค่าลบโดยเริ่มจากลำดับสุดท้ายที่ 
-1 และถัดมาเป็น -2  ไปเรื่อย ๆ ซึ่งอำนวยความสะดวกในกรณีข้อมูลมีการเพิ่มข้อมูลเข้าไปใหม่หรือการเปลี่ยนแปลงตำแหน่ง  ดังตัวอย่างในภาพที่ 3.2
>>> print yearList[0]
2550
>>> print yearList[-1]
2554
>>> print mixList[0] ,'  '+ mixList[3]
1   four
>>> for x in yearList:
                                                      print x
                       
2550
2551
2552
2553
2554
>>> print subList[3][0]
This is
>>> print listList[1]
['Python', 'Visual Basic', 'C#', 'Java']
  ภาพที่ 3.2  แสดงคำสั่งและผลลัพธ์การทำงานของการเข้าถึงลิสต์
                จากภาพที่ 3.2 ให้สังเกตการใช้ดัชนีที่อยู่ภายในวงเล็บเหลี่ยมแล้วนำมาเปรียบเทียบระหว่างลำดับตำแหน่งของข้อมูลกับผลลัพธ์ที่ได้ และให้พิจารณาการใช้คำสั่ง print subList จะเห็นว่าถ้าต้องการให้เข้าถึงข้อมูลในลิสต์ย่อยต้องเพิ่มวงเล็บเหลี่ยมเป็น 2  วงเล็บ ถ้าหากมีเพียงวงเล็บเดียวจะเข้าถึงเฉพาะลิสต์หลักเพียงอย่างเดียว

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

 monthList = ["January", "February", "March", "April", \
                                      "May", "June", "July", "August", \
                                     "September", "October", "November", "December"]
>>> wordCount = len(monthList)
>>> halfCount = wordCount/2
>>> firstHalf = monthList[  :  halfCount]
>>> secondHalf = monthList[ halfCount : ]
>>> middleStart = wordCount/2
>>> middleHalf = monthList[middleStart : middleStart / middleStart + halfCount]
>>> print firstHalf
['January', 'February', 'March', 'April', 'May', 'June']
>>> print secondHalf
['July', 'August', 'September', 'October', 'November', 'December']
>>> print middleStart
6
>>> print middleHalf
['July']
ภาพที่ 3.3  แสดงคำสั่งและผลลัพธ์ของการเข้าถึงแบบกำหนดตำแหน่ง
                จากภาพที่ 3.3 ให้พิจารณาการใช้คำสั่งเพื่อกำหนดตำแหน่งเริ่มต้น ถ้าเริ่มจากข้อมูลแรก ไม่ต้องใส่ดัชนี 0 หรือถ้าเริ่มจากตำแหน่งใด ๆ จนกระทั่งข้อมูลสุดท้าย โดยไม่ต้องใส่ค่าสุดท้ายเอาไว้  นอกจากนี้ยังสามารถใช้ผลการคำนวณจำนวนข้อมูลทั้งหมดมาแบ่งได้ ซึ่งเป็นที่นิยมใช้กันมากในกรณีที่ไม่รู้ตำแหน่งการเก็บข้อมูลที่แน่นอน 

4. การเพิ่มและลบข้อมูลลิสต์
                        การเพิ่มข้อมูลเข้าไปในลิสต์และการลบข้อมูลออกจากลิสต์ เป็นจุดเด่นของโปรแกรมภาษาไพธอน วิธีการเพิ่มด้วยคำสั่งที่เป็นเมท็อด หรือฟังก์ชันที่มีไว้ให้ใช้อยู่แล้ว เช่น คำสั่งเพื่อเพิ่ม ได้แก่ append()  เป็นการเพิ่มข้อมูลเพียงข้อมูลเดียว ต่อเนื่องจากข้อมูลสุดท้าย และคำสั่ง insert สำหรับการระบุลำดับที่ต้องการให้ข้อมูลแทรกในแถวตามต้องการ และ extent() เป็นการเพิ่มข้อมูลต่อเนื่องด้วยจำนวนหลาย ๆ ข้อมูลที่เป็นลิสต์ สำหรับการลบสามารถใช้ เมท็อด pop() โดยการระบุตำแหน่งและ remove() โดยการระบุชื่อข้อมูล สำหรับคำสั่ง del เป็นฟังก์ชันที่ต้องการลบในจำนวนมาก ดังตัวอย่างภาพที่ 3.4
 >>> list1 = [2549, 2550, 2551, 2552]
>>> list2 = [2553, 2554]
>>> list1.append(2000)  
>>> list2.insert(2, "Y2K")     
>>> list1.extend(list2)             
>>> list1.pop(4)                      
2000
>>> list2.remove("Y2K")   
>>> del list1[-1]
>>> print list1
[2549, 2550, 2551, 2552, 2553, 2554]
del list1[-2 : -1]
>>> print list1
[2549, 2550, 2551, 2552, 2554]
>>> list1 += list2
>>> print list1
[2549, 2550, 2551, 2552, 2554, 2553, 2554]
ภาพที่ 3.4 แสดงคำสั่งและผลลัพธ์การเพิ่มและลบข้อมูล
5. การเรียงลำดับ
                การเรียงลำดับในภาษาไพธอนมีเมท็อด  sort() ในการสั่งให้เรียงอยู่แล้ว โดยทั่วไปการเรียงข้อมูลจะเรียงจากค่าน้อยไปหาค่ามาก หรือการเรียงข้อมูลประเภทข้อความก็ใช้วิธีการเดียวกัน  เนื่องจากในระบบคอมพิวเตอร์มีการจัดเรียงพยัญชนะอย่างถูกต้องไว้แล้ว แต่ถ้าต้องการเรียงจากค่ามากไปหาน้อยให้ใช้ เมท็อด reverse() ดังตัวอย่างภาพที่ 3.5

 >>> numList = [12, 20, 15, 14, 35, 39, 42, 37, 32, 40]
>>> strList = ["Somchai", "Somsak", "Somnuk", "Somsri", "Somkid"]
>>> charList = ['a', 'c', 'b', 'y', 'z', 'x']
>>> caseList = ['d', 'B', 'F', 'A', 'c']
>>> numList.sort()
>>> print numList
[12, 14, 15, 20, 32, 35, 37, 39, 40, 42]
>>> strList.sort()
>>> print strList
['Somchai', 'Somkid', 'Somnuk', 'Somsak', 'Somsri']
>>> charList.sort()
>>> print charList
['a', 'b', 'c', 'x', 'y', 'z']
>>> caseList.sort()
>>> print caseList
['A', 'B', 'F', 'c', 'd']
>>> numList.reverse()
>>> print numList
[42, 40, 39, 37, 35, 32, 20, 15, 14, 12]

ภาพที่ 3.5 แสดงคำสั่งและผลลัพธ์การเรียงลำดับข้อมูล

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...