
เขียนโปรแกรมภาษา Python ตอนที่ 68 การเปลี่ยนแปลงข้อมูลใน List
ถ้าต้องการเปลี่ยนแปลงข้อมูลใน List สามารถทำได้โดยการระบุอินเด็กซ์ของข้อมูลที่ต้องการเปลี่ยน เช่น
list[0] = "iPod"
หมายถึง การกำหนดค่าให้ข้อมูลตัวแรก (อินเด็กซ์ 0) ใน List มีค่าเท่ากับ “iPod”
มาดูตัวอย่างกันดีกว่า
stock = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Nokia', 'Oppo'] print("ข้อมูลก่อนการเปลี่ยนแปลง : ") print(stock) stock[4] = "Asus" print("ข้อมูลหลังการเปลี่ยนแปลง : ") print(stock)
- บรรทัดที่ 6 กำหนดให้ข้อมูลลำดับที่ 5 (อินเด็กซ์ 4) ซึ่งค่าเดิมคือ “Vivo” เปลี่ยนเป็น “Asus”
ผลลัพธ์
ข้อมูลก่อนการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’, ‘Nokia’, ‘Oppo’]
ข้อมูลหลังการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘Samsung’, ‘Asus’, ‘Wiko’, ‘Nokia’, ‘Oppo’]
การเปลี่ยนแปลงข้อมูลแบบช่วง
นอกจากการเปลี่ยนแปลงข้อมูลทีละตัวแล้ว เรายังสามารถเปลี่ยนแปลงข้อมูลใน List ทีละหลาย ๆ ตัวได้โดยการเปลี่ยนแปลงแบบกำหนดอินเด็กซ์เป็นช่วง ซึ่งมีขั้นตอนคือ
- สร้าง List สำหรับข้อมูลที่ต้องการนำมาแทนที่ข้อมูลใน List ต้นทาง
- กำหนดให้แทนที่ข้อมูลใน List ต้นทางเป็นแบบช่วง
ดังแนวทางต่อไปนี้
list[2:5] = ["iPhone", "iPad", "iPod"]
หมายถึง การนำค่าจากลิสต์ด้านขวาไปแทนที่ค่าในลิสต์ต้นทางตั้งแต่ลำดับที่ 3 (อินเด็กซ์ 2) ไปจนถึงลำดับที่ 5 (อินเด็กซ์ 4) (เราระบุอินเด็กซ์สิ้นสุดเป็น 5 แต่อินเด็กซ์ 5 จะไม่ถูกรวมเข้าด้วย ดังนั้นจึงได้อินเด็กซ์ 4)
เพื่อความเข้าใจมากขึ้น มาดูตัวอย่างกันดีกว่า
stock = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Surface'] print("ข้อมูลก่อนการเปลี่ยนแปลง : ") print(stock) my_list = ["iMac", "MacBook Pro", "MacBook Air"] stock[3:6] = my_list print("ข้อมูลหลังการเปลี่ยนแปลง : ") print(stock)
- บรรทัดที่ 6 สร้างข้อมูลแบบ List ขึ้นมาใหม่ โดยมีสมาชิก 3 ตัว
- บรรทัดที่ 7 กำหนดให้นำข้อมูลจาก List ที่สร้างขึ้นใหม่ ไปแทนที่ข้อมูลใน List ต้นทาง ตั้งแต่ลำดับที่ 4 (อินเด็กซ์ 3) ไปจนถึงลำดับที่ 6 (อินเด็กซ์ 5 (6 ลบ 1))
ผลลัพธ์
ข้อมูลก่อนการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’, ‘Surface’]
ข้อมูลหลังการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘iMac’, ‘MacBook Pro’, ‘MacBook Air’, ‘Surface’]
อย่างไรก็ตาม ถ้าข้อมูลใน List ที่เรานำไปแทนที่ข้อมูลในลิสต์ต้นทาง มีจำนวนมากกว่าช่วงข้อมูลที่เรากำหนดให้แทนที่ในลิสต์ต้นทาง ข้อมูลในลิสต์ปลายทางจะถูกแทรกลงไปในลิสต์ต้นทางทั้งหมด ส่วนข้อมูลที่เหลือในลิสต์ต้นทางก็จะถูกขยับลำดับออกไป
ดังตัวอย่าง
stock = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Surface'] print("ข้อมูลก่อนการเปลี่ยนแปลง : ") print(stock) my_list = ["iMac", "MacBook Pro", "MacBook Air", "Mac Pro"] stock[3:6] = my_list print("ข้อมูลหลังการเปลี่ยนแปลง : ") print(stock)
จากโค้ดตัวอย่าง บรรทัดที่ 6-7 ข้อมูลในลิสต์ปลายทางมี 4 ตัว แต่เรากำหนดช่วงข้อมูลที่จะให้แทนที่ในลิสต์ต้นทางเป็นอินเด็กซ์ 3 ถึงอินเด็กซ์ 5 (6 ลบ 1) เท่ากับว่า ให้แทนที่ข้อมูลลำดับที่ 4 ถึง 6 ซึ่งเป็นข้อมูลจำนวน 3 ตัว เห็นได้ว่า ข้อมูลที่จะไปแทนที่ มีจำนวนมากกว่าข้อมูลที่จะถูกแทนที่
ในกรณีแบบนี้ Python จะนำข้อมูลจากลิสต์ปลายทางทั้งหมดไปแทรกลงในลิสต์ต้นทาง โดยที่ข้อมูลลำดับถัดจากข้อมูลที่ถูกแทนที่ก็ไม่ได้หายไปไหน แต่จะขยับลำดับออกไป
ผลลัพธ์
ข้อมูลก่อนการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’, ‘Surface’]
ข้อมูลหลังการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘iMac’, ‘MacBook Pro’, ‘MacBook Air’, ‘Mac Pro’, ‘Surface’]
ในทางตรงกันข้าม ถ้าข้อมูลในลิสต์ที่จะนำไปแทนที่ มีจำนวนน้อยกว่าจำนวนข้อมูลที่ถูกกำหนดให้ถูกแทนที่ในลิสต์ต้นทาง Python ก็จะนำข้อมูลในลิสต์ปลายทางเท่าที่มี ไปแทนที่ข้อมูลในลิสต์ต้นทางตามจำนวนที่ระบุเป็นช่วง แล้วข้อมูลที่เหลือก็จะถูกขยับลำดับเข้ามา
เช่น ถ้าลิสต์ปลายทางมีข้อมูล 2 ตัว และถูกกำหนดให้นำไปแทนที่ข้อมูลในลิสต์ต้นทางจำนวน 3 ตัว Python ก็จะนำข้อมูล 2 ตัวนี่แหละ ไปแทนที่ข้อมูลทั้ง 3 ตัวนั้น (ข้อมูล 3 ตัวในลิสต์ต้นทางจหายไปหมด)
ยิ่งอธิบายยิ่งงง มาดูตัวอย่างกันดีกว่าครับ
stock = ['iPhone', 'iPad', 'iPod', 'Samsung', 'Vivo', 'Wiko', 'Surface'] print("ข้อมูลก่อนการเปลี่ยนแปลง : ") print(stock) my_list = ["iMac", "MacBook Pro"] stock[3:6] = my_list print("ข้อมูลหลังการเปลี่ยนแปลง : ") print(stock)
ผลลัพธ์
ข้อมูลก่อนการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘Samsung’, ‘Vivo’, ‘Wiko’, ‘Surface’]
ข้อมูลหลังการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘iMac’, ‘MacBook Pro’, ‘Surface’]
การแทรกข้อมูลในลิสต์
นอกจากการแทนที่ข้อมูลในลิสต์แล้ว เรายังสามารถแทรกข้อมูลในลิสต์ได้ด้วย โดยการใช้เมธอด insert()
โดยมีรูปแบบการใช้งานดังนี้
list.insert(index,value)
- index คือลำดับอินเด็กซ์ที่ต้องการแทรกข้อมูลใหม่เข้าไป
- value คือค่าที่ต้องการแทรกในอินเด็กซ์ที่ระบุ
ข้อแตกต่างระหว่างการแทนที่ข้อมูลกับการแทรกข้อมูลคือ
- การแทนที่ข้อมูล จะทำให้ข้อมูลเดิมหายไป เพราะถูกแทนที่ด้วยข้อมูลใหม่
- การแทรกข้อมูล เป็นการนำข้อมูลใหม่เพิ่มเข้าไปในลิสต์ ข้อมูลเดิมยังคงอยู่ แต่จะมีการเปลี่ยนแปลงลำดับเพราะถูกแทรก
ตัวอย่างการแทรกข้อมูลในลิสต์ด้วยเมธอด insert()
stock = ['iPhone', 'iPad', 'iPod'] print("ข้อมูลก่อนการเปลี่ยนแปลง : ") print(stock) stock.insert(1, "iMac") print("ข้อมูลหลังการเปลี่ยนแปลง : ") print(stock)
- บรรทัดที่ 6 สั่งให้แทรกคำว่า “iMac” เข้าไปในอินเด็กซ์ 1 (ลำดับที่ 2) ของลิสต์ต้นทาง
ผลลัพธ์
ข้อมูลก่อนการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’]
ข้อมูลหลังการเปลี่ยนแปลง :
[‘iPhone’, ‘iMac’, ‘iPad’, ‘iPod’]
ถ้าเราระบุอินเด็กซ์เกินจำนวนข้อมูลที่มีอยู่จริงในลิสต์ ข้อมูลจะถูกแทรกเข้าไปในลำดับสุดท้ายของลิสต์
stock = ['iPhone', 'iPad', 'iPod'] print("ข้อมูลก่อนการเปลี่ยนแปลง : ") print(stock) stock.insert(8, "iMac") print("ข้อมูลหลังการเปลี่ยนแปลง : ") print(stock)
- บรรทัดที่ 6 สั่งให้แทรกคำว่า “iMac” เข้าไปในอินเด็กซ์ 8 คือลำดับที่ 9 ของลิสต์ต้นทาง แต่ความจริงข้อมูลในลิสต์ต้นทางมีเพียง 3 ตัว (ถึงอินเด็กซ์ 2) เท่านั้น ผลลัพธ์คือ ข้อมูลจะถูกแทรกไว้ที่ลำดับสุดท้ายของอินเด็กซ์ต้นทาง
ผลลัพธ์
ข้อมูลก่อนการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’]
ข้อมูลหลังการเปลี่ยนแปลง :
[‘iPhone’, ‘iPad’, ‘iPod’, ‘iMac’]
เขียนโปรแกรมภาษา 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
- ตอนที่ 119 การเข้าถึงข้อมูลใน Dictionary
- ตอนที่ 120 การเปลี่ยนแปลงข้อมูลใน Dictionary
- ตอนที่ 121 การเพิ่มข้อมูลใน Dictionary
- ตอนที่ 122 การลบข้อมูลใน Dictionary
- ตอนที่ 123 การวนลูปเข้าถึงสมาชิกใน Dictionary
- ตอนที่ 124 การคัดลอก Dictionary
- ตอนที่ 125 Dictionary ซ้อนกัน
- ตอนที่ 126 เมธอด clear()
- ตอนที่ 127 เมธอด copy()
- ตอนที่ 128 เมธอด fromkeys()
- ตอนที่ 129 เมธอด get()
- ตอนที่ 130 เมธอด items()
- ตอนที่ 131 เมธอด keys()
- ตอนที่ 132 เมธอด pop()
- ตอนที่ 133 เมธอด popitem()
- ตอนที่ 134 เมธอด setdefault()
- ตอนที่ 135 เมธอด update()
- ตอนที่ 136 เมธอด values()
- ตอนที่ 137 การตรวจสอบเงื่อนไขด้วย If statement
- ตอนที่ 138 การใช้ while loop