ในบทที่ 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
วิธีการเข้าถึงข้อมูลในลิสต์มีวิธีการง่าย ๆ ตามหลักการของอะเรย์ที่ใช้ดัชนีชี้ตำแหน่งที่อยู่ของข้อมูลโดยเริ่มต้นจากข้อมูลลำดับแรกที่ 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
การกำหนดตำแหน่งของลิสต์ ในภาษาไพธอน เรียกว่า 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
การเรียงลำดับในภาษาไพธอนมีเมท็อด 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 แสดงคำสั่งและผลลัพธ์การเรียงลำดับข้อมูล
ไม่มีความคิดเห็น:
แสดงความคิดเห็น