
เขียนโปรแกรมภาษา Python ตอนที่ 73 การเรียงข้อมูลใน List
ข้อมูลประเภท List มีเมธอด sort() ซึ่งใช้เรียงข้อมูลตามตัวอักษรและตัวเลขจากน้อยไปหามากเป็นค่าเริ่มต้น
phone = ["iPhone", "Vivo", "Asus", "Wiko", "Nokia", "Samsung", "Oppo", "Sony"] phone.sort() print(phone)
[‘Asus’, ‘Nokia’, ‘Oppo’, ‘Samsung’, ‘Sony’, ‘Vivo’, ‘Wiko’, ‘iPhone’]
number = [10, 50, 20, 15, 2, 6] number.sort() print(number)
[2, 6, 10, 15, 20, 50]
ถ้าต้องการเรียงข้อมูลจากมากไปน้อย ก็สามารถทำได้โดยการใช้คีย์เวิร์ด reverse = True
โดยมีรูปแบบดังนี้
list.sort(reverse = True)
phone = ["Apple", "Vivo", "Asus", "Wiko", "Nokia", "Samsung", "Oppo", "Sony"] phone.sort(reverse=True) print(phone)
[‘Wiko’, ‘Vivo’, ‘Sony’, ‘Samsung’, ‘Oppo’, ‘Nokia’, ‘Asus’, ‘Apple’]
number = [10, 50, 20, 15, 2, 6] number.sort(reverse=True) print(number)
[50, 20, 15, 10, 6, 2]
Case Insensitive Sort
โดยปกติเมธอด sort()
จะทำงานแบบ case sensitive คือพิจารณาตัวอักษรพิมพ์เล็กพิมพ์ใหญ่ด้วย โดยเวลาเรียงข้อมูล จะเรียงตัวอักษรพิมพ์ใหญ่ก่อน ตามด้วยตัวอักษรพิมพ์เล็ก ดังตัวอย่าง
phone = ["iPhone", "Vivo", "Asus", "Wiko", "Nokia", "Samsung", "Oppo", "Sony"] phone.sort() print(phone)
ผลลัพธ์
[‘Asus’, ‘Nokia’, ‘Oppo’, ‘Samsung’, ‘Sony’, ‘Vivo’, ‘Wiko’, ‘iPhone’]
จะเห็นว่า คำว่า “iPhone” ถูกเรียงไว้หลังสุด เพราะขึ้นต้นด้วยตัวอักษรพิมพ์เล็ก ในขณะที่คำอื่นขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่ทั้งหมด
จากตัวอย่าง อาจทำให้ผลลัพธ์ไม่เป็นไปตามที่ต้องการ เพราะความจริง “iPhone” น่าจะอยู่ลำดับที่ 2 ต่อจาก “Asus” เพราะตัวอักษร “i” มาก่อนตัวอักษร “N”
ถ้าต้องการเรียงข้อมูลในลิสต์แบบ case-insensitive ต้องทำอย่างไร?
ถ้าต้องการเรียงข้อมูลในลิสต์โดยไม่ต้องให้ความสำคัญกับตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่ ก็สามารถทำได้ โดยใช้ built-in function str.lower
เป็น key function ในเมธอด sort()
โดยมีรูปแบบดังนี้
list.sort(key = str.lower)
phone = ["Apple", "Vivo", "Asus", "iPhone", "Wiko", "Nokia", "Samsung", "Oppo", "Sony"] phone.sort(key = str.lower) print(phone)
- บรรทัดที่ 2 กำหนดคีย์ฟังก์ชัน
key = str.lower
ให้กับเมธอดsort()
เพื่อให้ทำการแปลงตัวอักษร์เป็นตัวพิมพ์เล็กก่อนค่อยจัดเรียง ก็เท่ากับว่าข้อมูลที่เอามาเรียนเป็นตัวพิมพ์เล็กทั้งหมด ทำให้การเรียงไม่ผิดพลาดนั่นเอง
ผลลัพธ์
[‘Apple’, ‘Asus’, ‘iPhone’, ‘Nokia’, ‘Oppo’, ‘Samsung’, ‘Sony’, ‘Vivo’, ‘Wiko’]
การเรียงข้อมูลด้วยฟังก์ชันที่กำหนดเอง
เราสามารถสร้างฟังก์ชันขึ้นมาเพื่อกำหนดแนวทางในการเรียงข้อมูลในลิสต์ แล้วกำหนดฟังก์ชันนั้นเป็นอากิวเมนต์ของเมธอด sort()
ในรูปแบบ key = function
เพื่อให้ได้การเรียงข้อมูลตามที่เราต้องการ ดังตัวอย่าง
def myFunction(num): return abs(num - 10) mylist = [75, 25, 67, -89, 34] mylist.sort(key = myFunction) print(mylist)
- บรรทัดที่ 1-2 สร้างฟังก์ชันขึ้นมา 1 ฟังก์ชัน คืนค่ากลับออกไปเป็นตัวเลขที่ได้จากการนำเอาตัวเลขที่ส่งเข้ามา ไปลบด้วย 10 แล้วทำให้เป็นจำนวนเต็มบวก
- บรรทัดที่ 5 เรียกใช้เมธอด
sort()
เพื่อเรียงข้อมูลในลิสต์ โดยกำหนดอากิวเมนต์เป็นฟังก์ชันที่สร้างไว้key = myFunction
ผลลัพธ์ที่ได้จะเกิดจากการนำเอาตัวเลขในลิสต์ไปลบ 10 แล้วทำเป็นตัวเลขจำนวนเต็มบวก แล้วจึงนำมาเรียงจากน้อยไปหามาก
[25, 34, 67, 75, -89]
Reverse Order
ถ้าต้องการกลับลำดับข้อมูลในลิสต์โดยมีคำนึงถึงตัวอักษร ให้ใช้เมธอด reverse()
ดังนี้
phone = ["Apple", "Vivo", "Asus", "iPhone", "Wiko", "Nokia", "Samsung", "Oppo", "Sony"] phone.reverse() print(phone)
- บรรทัดที่ 2 ใช้เมธอ reverse() กลับลำดับข้อมูลในลิสต์ โดยจะไม่มีการพิจารณาตัวอักษร เพียงกลับลำดับเท่านั้น
ผลลัพธ์
[‘Sony’, ‘Oppo’, ‘Samsung’, ‘Nokia’, ‘Wiko’, ‘iPhone’, ‘Asus’, ‘Vivo’, ‘Apple’]
เขียนโปรแกรมภาษา Python
- ตอนที่ 1 ทำความรู้จักกับภาษาไพธอน Python
- ตอนที่ 2 เตรียมเครื่องมือ
- ตอนที่ 3 Python Syntax
- ตอนที่ 4 การเขียนคอมเม้นต์
- ตอนที่ 5 การใช้ฟังก์ชัน print
- ตอนที่ 6 ตัวแปร
- ตอนที่ 7 การตั้งชื่อตัวแปร
- ตอนที่ 8 การกำหนดค่าให้ตัวแปรทีละหลายตัว
- ตอนที่ 9การแสดงค่าจากตัวแปร
- ตอนที่ 10 ตัวแปรประเภท Global
- ตอนที่ 11 ชนิดข้อมูล
- ตอนที่ 12 ข้อมูลชนิดตัวเลข
- ตอนที่ 13 การแปลงชนิดข้อมูล
- ตอนที่ 14 ข้อมูลชนิด String
- ตอนที่ 15 slice syntax
- ตอนที่ 16 การเปลี่ยนแปลงข้อมูล String
- ตอนที่ 17 การต่อข้อมูลชนิด String
- ตอนที่ 18 การจัดรูปแบบ String
- ตอนที่ 19 Escape Character
- เตอนที่ 20 เมธอด zfill()
- ตอนที่ 21 เมธอด upper()
- ตอนที่ 22 เมธอด title()
- ตอนที่ 23 เมธอด swapcase()
- ตอนที่ 24 เมธอด strip()
- ตอนที่ 25 เมธอด startswith()
- ตอนที่ 26 เมธอด splitlines()
- ตอนที่ 27 เมธอด split()
- ตอนที่ 28 เมธอด rstrip()
- ตอนที่ 29 เมธอด rsplit()
- ตอนที่ 30 เมธอด rpartition()
- ตอนที่ 31 เมธอด rjust()
- ตอนที่ 32 เมธอด rindex()
- ตอนที่ 33 เมธอด rfind()
- ตอนที่ 34 เมธอด replace()
- ตอนที่ 35 เมธอด partition()
- ตอนที่ 36 เมธอด lstrip()
- ตอนที่ 37 เมธอด lower()
- ตอนที่ 38 เมธอด ljust()
- ตอนที่ 39 เมธอด join()
- ตอนที่ 40 เมธอด isupper()
- ตอนที่ 41 เมธอด istitle()
- ตอนที่ 42 เมธอด isspace()
- ตอนที่ 43 เมธอด isprintable()
- ตอนที่ 44 เมธอด isnumeric()
- ตอนที่ 45 เมธอด islower()
- ตอนที่ 46 เมธอด isidentifier()
- ตอนที่ 47 เมธอด isdigit()
- ตอนที่ 48 เมธอด isdecimal()
- ตอนที่ 49 เมธอด isalpha()
- ตอนที่ 50 เมธอด isalnum()
- ตอนที่ 51 เมธอด index()
- ตอนที่ 52 เมธอด format()
- ตอนที่ 53 เมธอด find()
- ตอนที่ 54 เมธอด expandtabs()
- ตอนที่ 55 เมธอด endswith()
- ตอนที่ 56 เมธอด encode()
- ตอนที่ 57 เมธอด count()
- ตอนที่ 58 เมธอด center()
- ตอนที่ 59 เมธอด casefold()
- ตอนที่ 60 เมธอด capitalize()
- ตอนที่ 61 เมธอด format_map()
- ตอนที่ 62 เมธอด maketrans()
- ตอนที่ 63 เมธอด translate()
- ตอนที่ 64 ข้อมูลชนิด Boolean
- ตอนที่ 65 ตัวดำเนินการ
- ตอนที่ 66 ข้อมูลประเภท List
- ตอนที่ 67 การเข้าถึงสมาชิกใน List
- ตอนที่ 68 การเปลี่ยนแปลงข้อมูลใน List
- ตอนที่ 69 การเพิ่มข้อมูลใน List
- ตอนที่ 70 การลบข้อมูลใน List
- ตอนที่ 71 การเข้าถึงข้อมูลใน List ด้วย loop
- ตอนที่ 72 List Comprehension
- ตอนที่ 73 การเรียงข้อมูลใน List
- ตอนที่ 74 การคัดลอก List
- ตอนที่ 75 การรวม List เข้าด้วยกัน
- ตอนที่ 76 เมธอด append()
- ตอนที่ 77 เมธอด clear()
- ตอนที่ 78 เมธอด copy()
- ตอนที่ 79 เมธอด count()
- ตอนที่ 80 เมธอด extend()
- ตอนที่ 81 เมธอด index()
- ตอนที่ 82 เมธอด insert()
- ตอนที่ 83 เมธอด pop()
- ตอนที่ 84 เมธอด remove()
- ตอนที่ 85 เมธอด reverse()
- ตอนที่ 86 เมธอด sort()
- ตอนที่ 87 ข้อมูลชนิด Tuple
- ตอนที่ 88 การเข้าถึงข้อมูลใน Tuple
- ตอนที่ 89 การแก้ไขข้อมูลใน Tuple
- ตอนที่ 90 การแยกข้อมูลใน Tuple
- ตอนที่ 91 เข้าถึงข้อมูลใน Tuple ด้วยลูป
- ตอนที่ 92 การรวม Tuple เข้าด้วยกัน
- ตอนที่ 93 เมธอด count()
- ตอนที่ 94 เมธอด index()
- ตอนที่ 95 ข้อมูลประเภท Set
- ตอนที่ 96 การเข้าถึงข้อมูลใน Set
- ตอนที่ 97 การเพิ่มข้อมูลใน Set
- ตอนที่ 98 การลบข้อมูลใน Set
- ตอนที่ 99 การเข้าถึงข้อมูลใน Set ด้วยลูป for
- ตอนที่ 100 การจอย Join ข้อมูลใน Set
- ตอนที่ 101 เมธอด add()
- ตอนที่ 102 เมธอด clear()
- ตอนที่ 103 เมธอด copy()
- ตอนที่ 104 เมธอด difference()
- ตอนที่ 105 เมธอด difference_update()
- ตอนที่ 106 เมธอด discard()
- ตอนที่ 107 เมธอด intersection()
- ตอนที่ 108 เมธอด intersection_update()
- ตอนที่ 109 เมธอด isdisjoint()
- ตอนที่ 110 เมธอด issubset()
- ตอนที่ 111 เมธอด issuperset()
- ตอนที่ 112 เมธอด pop()
- ตอนที่ 113 เมธอด remove()
- ตอนที่ 114 เมธอด symmetric_difference()
- ตอนที่ 115 เมธอด symmetric_difference_update()
- ตอนที่ 116 เมธอด union()
- ตอนที่ 117 เมธอด update()
- ตอนที่ 118 ข้อมูลประเภท Dictionary