--- title: โครงสร้างข้อมูลและอัลกอริทึม 28/06/2565 subtitle: date: วันอังคารที่ 28 มิถุนายน 2565 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์สุธาสินี) เดี๋ยวเรามาต่อจากคราวที่แล้ว เราพูดถึงเรื่องของการวัดประสิทธิภาพของอัลกอริทึมนะคะ เราวัดในเรื่องอะไร นะคะ ตัววัดที่เราใช้ ก็คือ Big -O เราเรียนไปแล้วนะเดี๋ยววันนี้ครูทวนให้ก่อน ก่อนจะขึ้นเรื่องใหม่นะ อะไรนะ เดี๋ยวทวน ลองดูตัวนี้ด้วยกันก่อนะคะ ว่า พอเข้าใจไหมนะคะ ไม่อย่างนั้นครูทวนเริ่มต้นใหม่ให้ เพราะครั้งที่แล้ว เพื่อนไม่ได้มากันเยอะนะคะ เพราะว่าเราเสี่ยงนะคะ ครูมีโปรแกรมมาให้ โปรแกรมมาให้นะคะ อยู่ทั้งหมด 3 บรรทัดนะคะ ทุกคนดูที่สไลด์นะคะ ครูมีโปรแกรมมาให้นะคะ บรรทัดที่ 1 Total = 0 นะคะ บรรทัดนี้ครูทำอะไร เป็นการกำหนดค่าเริ่มต้นใช่ไหมคะ เป็นการกำหนดค่าเริ่มต้นกับตัวแปรที่ชื่อว่า Total ให้มีค่าเริ่มต้นมันมีค่าเป็น 0 ถูกไหมคะ พอเรา Run บรรทัดที่ 1 แล้วนะคะ Total คือตัวแปรตัวหนึ่ง เราจะเก็บค่าเป็น 0 ก็คือเอา 0 นี่ เก็บไว้ที่ Total ไว้นะคะ บรรทัดที่ 2 เราเห็น for ใช่ไหมคะ คำสั่ง for คืออะไร เมื่อไรก็ตามที่เห็น for มันคือการวนซ้ำใช่ไหมคะ Loop for ที่เราพูดกันที่เข้าใจ ก็คือ loop for มันทำงานหลายครั้งนะคะ มันไม่ได้ทำงานครั้งเดียว ตามเงื่อนไขนะคะ มันสามารถทำงานหลายครั้งได้ แต่บรรทัดแรก แต่บรรทัดแรกมันไม่ได้อยู่ใน loop forเวลาโปรแกรมอ่านคำสั่งเพื่อ Run นะ Total จะทำงาน 1 ครั้ง มันทำงาน 1 ครั้งแล้วก็ผ่านไป บรรทัดนี้มันทำงานแล้ว มันก็ผ่านไปนะคะ ถัดมา บรรทัดที่ 2 เป็นคำสั่ง for ก็คือการวนซ้ำ แสดงว่ามันต้องทำงานได้มากกว่า 1 ครั้งนะ อันนี้เราสันนิษฐานได้เลยว่า ถ้ามี for มันสามารถทำงานได้มากกว่า 1 ครั้ง ไม่ได้อยู่ภายใต้ loop for ทำงานแค่ 1 ครั้งเท่านั้นนะคะ for ตัวนี้ทำอะไร for i in range แล้วก็ n นะคะ เราต้องแปลความหมายของคำว่า len ก่อนว่ามันคืออะไร ใช่ไหมคะ สิ่งที่ได้นี่จาก range ตัวนี้จะเป็น list จะเป็นค่า แบบเป็นลิสต์แบบตรงนี้ ที่ใช้สัญลักษณ์ก้ามปู เปิด ก้ามปูปิด ครูกำหนดให้ n = 3 เห็นไหมคะ n = 3 เพราะฉะนั้น เราต้องแปลความหมายว่า range 3 นี่ มันมีค่าอะไรบ้าง ที่เป็นไปได้ len 3 สามารถมีค่าเป็นอะไรได้บ้างเอ่ย 0 เพื่อนบอกว่า ถ้า range 3 ค่าที่เป็นไปได้คือ 0, 1, 2 เห็นไหมคะ range วงเล็บเปิด แล้สก็ 3 วงเล็บ 3 จะเริ่มที่ Index เท่ากับ 0 เสมอ ค่าแรกที่อยู่ใน list คำตอบ ต้องเป็น 0 นะคะ ถัดมา แล้วรู้ได้อย่างว่าถึงแค่ 2 วิธีสังเกตง่าย ๆ มัน 3 ใช่หรือเปล่า ลดออกไป 1 ก็จะมี 0 1 แล้วก็ 2 ถูกไหมคะ 3 นี่นะก็ลบออกไป 1 ก็เหลือ 2 0, 1, 2, นะคะ หรือมันมี 3 ตัวนะ ก็จะกลายเป็น 0 1 2 ก็จะมีทั้งหมด 3 ตัวนะคะ เพราะฉะนั้น range (3) 3 มาจากไหน ก็ครูกำหนดให้ range = 3 ก็คือค่าที่เป็นไปได้คือ 0 1 2 ดังนั้น for i จะมีค่า ก็คือมีค่าอะไรบ้าง คะ 0, 1 แล้วก็ 2 ครูก็เลยเขียนตรงนี้ก่อนว่า ค่า i ที่เป็นไปได้ คือ 0 1 แล้วก็ 2 ถัดมาที่เราต้องเช็กว่า แล้วเมื่อ i เป็น 0 มันทำงานบรรทัดที่ 1 ไหม ถ้าทำ Loop for มันก็จะมาทำบรรทัดที่ 2 ก็คือสิ่งหรือคำสั่งที่อยู่ข้างใน loop for ก็คือ print ใช่ไหมคะ เพราะฉะนั้น ไอ้คำสั่ง print นี่ มันจะทำงานก็ต่อเมื่อ i มีค่าเป็น 0 1 2 นะคะ ตามข้างบนนี้ ค่า i ที่เป็นไปได้คือ 0 1 2 ดังนั้น คำสั่ง for ทำงานก็ต่อเมื่อ i มีค่าเป็น 0 1 2 เพราะฉะนั้น ครูก็เลยใส่สัญลักษณ์เครื่องหมายถูก เพื่อให้รู้ว่าคำสั่งนี้ทำงานนะคะ เห็นไหมคะ ครูใส่เครื่องหมายถูกเพื่อให้รู้ว่าคำสั่ง for ทำงานนะ แล้วก็คำสั่ง print ก็ทำงาน i เป็น 1 คำสั่ง for ก็ทำงาน ค่ามันบอกอยู่แล้ว print ก็ทำงาน i เป็น 2 for ทำงานถูกไหมคะ print ก็ทำงาน คราวนี้ มันทำงานทั้งหมดกี่ครั้ง 3 ครั้งถูกไหมคะ ครูก็เขียนเลข 3 ทำงานทั้งหมด 3 ครั้ง คราวนี้แต่ละตัวใช่ไหมคะ ภาพรวมนี่มันทำงานทั้งหมดกี่ครั้ง เมื่อเรากด run โปรแกรมปุ๊บ คั่งสั่ง For กับคำสั่ง มันทำงาน 3 ครั้งใช่ไหมคะ แล้วเมื่อมันทำงาน n ใด ๆ จะทำงานกี่ครั้ง ครูลองเทียบนะ ถ้า range เป็น 4 ค่าที่ได้คืออะไร ค่าที่เได้คืออะไร ค่าที่เป็นไปได้คือ 0, 1, 2, 3 มีทั้งหมดกี่ ค่า 4 ค่า แสดงว่าเมื่อ n เป็น 4 มันก็จะทำงาน 4 ครั้งใช่ไหมคะ แล้วถ้าครูบอกว่าถ้า n เป็น 10 จะทำงานกี่ครั้ง ถ้า n เป็น 10 0, 1 2 3, 4, 5, 6, 7, 8, 9 0 - 9 ทำงานทั้งหมดกี่ครั้ง 10 ครั้ง ถูกไหมคะ 0 จนถึง 9 นี่ ทำงาน 10 ครั้งลองดู ครูรู้ได้อย่างไรว่ามัน 10 ครั้ง นี่ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 เห็นไหมคะ ถ้า n เป็น 10 ทำงาน 10 ครั้ง เพราะฉะนั้น เราสามารถสรุปได้ไหมว่าเมื่อ n ใด ๆ จะทำงานกี่ครั้ง กี่ครั n ครั้งถูกไหม งงไหมคะ เมื่อเป็น n ใด ๆ จะทำงาน n ครั้ง เพราะฉะนั้น ครูถามว่าเมื่อ n เป็น 100 มันจะต้องทำงานทั้งหมดกี่ครั้งเมื่อเข้าโปรแกรมตัวนี้ 100 ครั้ง ใช่ไหมคะ 100 ครั้ง เป็น 100 ครั้งนะ เพราะฉะนั้น เราจะมาหา ฟังก์ชัน เรารู้แล้วละว่าเมื่อเป็น n ใด ๆ มันจะทำงาน n ครั้ง เพราะฉะนั้น เราก็มาเขียนข้างหลังตัวนี้นะคะ ว่า n ครั้งนะ เพราะว่าตรงนี้ตัวแปรเราคือ n ตัวนี้ก็ทำงาน n ครั้ง บรรทัดแรกทำงานกี่ครั้งคะ บรรทัดที่ 1 ทำงานกี่ครั้งคะ มันอยู่ใน loop for ไหม ไม่ เพราะฉะนั้นมันทำงาน 1 ครั้งใช่ไหมคะ จากนั้นเรามาหาค่า Function ก็คือเอาสิ่งที่อยู่ข้างหลังนี้ ที่เราแปลค่า มาบวกกันจะเป็น 1 + 1+ n เท่ากับเท่าไรเอ่ย 1n + 1n เป็นเท่าไรคะ 2n อันนี้คือ 1n 1n + 1n เท่ากับ 2n บวกด้วย 1 นะคะ เสร็จแล้วเราจะหาค่า Big-O ต่อ เราดูที่ไหนดูค่า n ที่มากที่สุด n เดียวใช่ไหม ดูค่า n ที่มากที่สุด คือ n เดียวนะคะ เพราะฉะนั้น Big-O เลยตอบเท่ากับ o (n) ก็คือ เขียนตัว o ก็คือเขียนวงเล็บเปิด แล้วก็ตัว n หยิบเฉพาะตัว n มาใส่เฉย ๆ นะคะ เป็นตัว n ได้ไหม เอากระดาษมาไหมคะ ครูบอกให้เอาสมุดมา เอาสมุดมาด้วยนะ เดี๋ยวมันจะกระจัดกระจาย กระดาษที่พี่เขาแจกทุกครั้งยังอยู่ไหม เดี๋ยวท้ายชั่วโมงครูจะตรวจนะ ว่ากระดาษที่เราทำกันในห้อง มันอยู่ที่ไหนกันหมด เราทำใส่กระดาษนะ เราไม่เอาสมุดมาเราทำใส่กระดาษ หรือหาคริปหนีบนะคะ หรือมีสมุดรายงานอย่างนี้ก็ได้ ทุกคนดู ครูใช้โจทย์นี้ Total = 0 for i in range n แล้วก็คำสั่งที่อยู่ใน Loop for ก็คือ print i ตัวอย่างนี้ กำหนดให้ n = 3 เปลี่ยนใหม่ บอกว่ากำหนดให้ n เท่ากับ 4 ข้างหลังตรงนี้ครูจะต้องเปลี่ยน เดี๋ยวนะ ค่าตรงนี้ช่วยครูเขียนหน่อย ว่ามันควรจะเป็นอะไร ค่า i ที่ได้ควรจะเป็นเท่าไรนะคะ จำนวนครั้งของการทำงานเป็นกี่ครั้ง ค่าตรงนี้เมื่อเป็น n ใด ๆ จะเขียนอะไร ฟังก์ชันคืออะไร แล้วก็ Big-O คืออะไร เรียนแบบตัวนี้เลย แต่เปลี่ยนค่า n ให้เป็น 4 นึกออกไหมคะ คือแทน n ตัวนี้ ด้วยเลข 4 มีใครสงสัยไหม เอ๊ะ ครูให้ทำอะไร เดี๋ยวทุกคนลอกโจทย์ก่อน ไม่ขึ้นหรือ แป๊บหนึ่ง ๆ ทุกคนลอกโจทย์ตรงนี้ก่อนก็ได้ค่ะ เดี๋ยวครูค่อยย้อนกลับไปที่ตัวอย่างก่อนนะคะ อันนี้คือโจทย์เหมือนเดิมตรงนี้ n = 4 นะคะ เดี๋ยวลอกโจทย์ตรงนี้ก่อน แล้วครูจะย้อนกลับไปที่ตัวอย่างให้ ลอกโจทย์ตัวนี้ลงกระดาษก่อน ตรง len 4 เขียนต่อไปเลยว่ามันมีค่าเป็นอะไร ถ้าเขียนได้นะคะ range 4 เขียนคำตอบตรงนี้ให้ครูด้วย ว่าค่าที่เป็นไปได้คืออะไร เสร็จแล้วเอาค่าเหล่านั้นมาใส่ช่อง i (อาจารย์สุธาสินี) เดี๋ยวครูย้อนกลับไปดูตัวอย่างให้ แบบนี้อันนี้คือตัวอย่าง ลองดู ทุกคนทำเหมือนตัวอย่างนะคะ (อาจารย์สุธาสินี) โอเคนะคะ พอได้นะ เมื่อเราเปลี่ยนค่า n เป็นตัวเลขใด ๆ คำตอบ ก็คือทุกคนก็จะได้ on เหมือนกันนะ ฟังก์ชันที่ได้ก็คือ 2+1 จะเป็น Big-O คือ o (n) ตรงนี้คือการวัดประสิทธิภาพนะโดยเราวัดที่เวลา โดยดูจากจำนวนรอบที่ทำงาน โอเค เดี๋ยววันนี้นะคะ เดี๋ยวครูจะขึ้นเรื่องใหม่ คือ เรื่องของลิสต์ ลิสต์ ลิสต์ เมื่อกี้เราพูดถึงไปแล้วนะ range 3 ค่าข้อมูลที่ได้นี่มันเป็น list ใช่ไหมคะ สมมติ 1, 2 ข้อมูลจะอยู่ในลิสต์นะ อีกตัวนึงที่ต้องเรียนก็คือ Dictionary นะคะ เป็นโครงสร้างหรือรูปแบบการจัดเก็บข้อมูลในภาษา Python โดยทั่วไปนะคะ อย่างเช่น เมื่อกี้เราเห็น Total = 0 นะ เราเห็น Total = 0 total ที่เก็บเพียง 1 ค่าเท่านั้น คือ เลข 0 ใช่ไหมคะ Total เป็นตัวแปรตัวหนึ่งที่เก็บค่า = 0 แต่ถ้าเราต้องการให้ตัวแปร 1 ตัวเก็บ... 1 ค่า หา 1 ค่า เราจะต้องกำหนด ให้มันมีรูปแบบของการจัดเก็บเป็นแบบ list l-i-s-t นะคะ เป็นแบบ list 1 ตัวแปร สามารถเก็บข้อมูลได้หลายค่า และเก็บชนิดข้อมูลได้หลายแบบ เป็นได้ทั้งตัวเลข ตัวหนังสือนะคะ ครูยกตัวอย่างเหมือนที่เราพูดถึง Total เมื่อกี้นี้ ครูเปลี่ยนเป็น x = 5 ตัวแปร x เก็บข้อมูลมีค่าเท่ากับ 5 มีแค่ 1 ค่าเท่านั้นนะ ได้แค่เลข 5 เลขเดียวนะคะ แต่มาดูตัวแปรอีกตัวหนึ่ง ก็คือตัวแปรที่ชื่อว่า thislist ตัวแปรตัวนี้นะคะ เก็บข้อมูลเห็นไหมคะ มันมีหลายค่า มันมีอยู่ทัั้งหมด 3 ค่า มี apple เป็นค่าที่ 1 มี banana เป็นค่าที่ 2 มี cherry เป็นค่าที่ 3 แล้วค่าที่เก็บเป็นตัวอักษรเห็นไหมคะ เห็น Double Coude ตัวนี้นะ ชนิดข้อมูลที่อยู่ใน list ที่ชื่อ thislist ตัวนี้เป็นตัวอักษร มีอยู่ทั้งหมด 3 ค่านะคะ มีอยู่ทั้งหมด 3 ค่า เวลาเราเข้าถึงข้อมูลที่อยู่ในลิสต์เราจะใช้ Index ในการอ้างอิง Index ตัวแรกจะเริ่มที่ 0 อันนี้ index ตัวแรก ที่ 2 นะคะ มาดู ตัวแปรตัวที่ 2 คือ list 1 มีทั้งหมดกี่ค่าเอ่ย มีค่าข้อมูลกี่ค่าคะ ชูมือให้ครูดูหน่อย มีทั้งหมดกี่ค่า list มีค่าข้อมูลทั้งหมดทั้งหมด 5 ถูกไหม ใช่ไหม ใช่ไหมคะ ใช่ ตัวที่ 1 ตัวที่ 2 ตัวที่ 3 ตัวที่ 4 และตัวที่ 5 มีอยู่ทั้งหมด 5 ค่า และเก็บชนิดข้อมูลเป็นแบบไหน เป็นแบบตัวอักษรเห็นไหมคะ มันมี Double code นะคะ 34 40 เป็นตัวเลขนะ เป็นตัวอักษรนะ 34 ตัวนี้ แต่มันอยู่ภายใต้ double code ต้องเป็นตัวอักษร ค่า 34 ที่อยู่ ภายใต้ Double Quote ตัวนี้ ไม่เหมือนกันนะ นะคะ 34 ตัวนี้ สามารถเอาไปคำนวณได้ แต่ 34 ที่เป็นตัวอักษร คำนวณไม่ได้นะคะ จะคำนวณไม่ได้ ถัดมา เวลาเราเข้าถึงข้อมูลที่อยู่ใน ลิสต์ มันมีหลายค่า มันไม่ได้มีเก็บเพียงแค่ค่าเดียว ถ้าค่าเดียวคุณก็เรียกใช้ตัวแปรนั้นได้เลย เช่น Total x อย่างนี้เราเรียกใช้ได้เลย แต่เมื่อไรก็ตามที่เราเก็บข้อมูล เวลาเราจะเข้าถึงข้อมูล เราจะใช้ index เป็นตัวอ้างอิง index ตัวแรก จะเริ่มที่ 0 นะคะ index ตัวแรกจะเข้าที่ 0 อันนี้คือ list นะคะ thislist คือ ชื่อของ list จะเป็นตัวแปรอะไรก็ได้ จะมีค่าอยู่ทั้งหมด 3 ค่า ด้วยกันเป็นข้อความนะคะ เป็นข้อความ ดูจากมันมี Double Quote ตัวนี้ เลยเป็นข้อความ ถ้าครูต้องการเข้าถึงข้อมูล banana ครูอยากให้แสดงข้อมูล banana ครูจะเข้าถึงข้อมูลนั้นได้อย่างไร ครูก็อ้างอิงโดยการใช้ชื่อ list ก้ามปูเปิด ตำแหน่งของ banana มันอยู่ ใช่ไหมคะ ถ้าไม่รู้มันอยู่ index ที่เท่าไร เราก็วาดตาราง มี apple banana cherry แล้วก็ใส่ข้างบนเป็น index เราเริ่มที่เท่าไรคะ 0 , 1, 2 ครูต้องการ banana ถูกไหม เพราะฉะนั้น index ครูเป็นเท่าไร ครูก็ใส่ชื่อ list ก้ามปูเปิด หมายเลข index ก็จะได้ banana ออกมา thislist 0 ได้อะไรเอ่ย 0 นี่คืออะไร apple ก็จะได้ apple ออกมา thislist 2 2 ได้อะไรคะ ได้ cherry ออกมา มีใครสงสัยไหม เดี๋ยวเรามาคุยกันนะ กับแบบฝึกหัดตัวนี้ ครูมี list นะคะ เดี๋ยวครูเขียน ครูมีตัวแปรที่ชื่อว่า x ใช่หรือเปล่า ครูมีตัวแปรที่ชื่อว่า x ครูมีค่าข้อมูลกี่ค่าคะ ข้อมูลที่อยู่ใน x มีกี่ค่า มีขนาดเท่าไร มีข้อมูลกี่ตัว 5 ตัว ใช่ไหมคะ ครูมีข้อมูลอยู่ 5 ตัว ตัวแรกเริ่มต้นที่ index เป็น 0 ใช่ไหมคะ ครูก็หย่อน มี 2 4 6 8 10 เริ่มต้น index เป็น 0 เป็น 1 เป็น 2 เป็น 3 เป็น 4ครูต้องการเข้าถึงข้อมูลที่อยู่ใน list เช่น x [3] ตอบเท่าไร ตอบเท่าไรคะ 8 ใช่ไหม ตอบ 8 นะ รู้ได้อย่างไร อ้าว ก็นี่ไง 3 ค่าที่ได้คือ 8 3 คือ index 3 ตัวนี้ คือ index ใช่ไหมคะ 8 เราก็ต้องเอาค่ามาใส่ตรงนี้ ถัดมา x2 ได้ 6 นะ x index ที่ 0 ก็ได้ 2 ช่วยครูตอบหน่อย x 4 เท่ากับเท่าไร x index = 1 x index เป็น 1 ตอบอะไร ใช่ อันแรกเป็น 10 อันนี้เป็นอะไร เป็น 4 10 นี่คือ อันนี้คือ 4 ใช่ ตัวนี้คือ 4 โอเค อันนี้คือ 10 นะคะ อันนี้คือ 10 อันนี้คือ 4 ทุกคนเข้าใจนะ คราวนี้ ครูไม่วาดตารางให้นะ ครูให้ค่าแบบนี้มา ครูอยากรู้ว่า y index เท่ากับ 3 index เป็น 0 index เป็น 2 note ไว้สิ ใช่กระดาษของตัวเอง ทีละข้อ index เป็น 3 ตอบอะไร คนอื่นตอบอะไร 3 เริ่มที่เท่าไร เริ่มที่ 0 0 1 2 3 4 5 6 ถ้าใครยังนึกไม่ออก วาดตารางแบบนี้ใส่ก็ได้นะคะ หรือเขียน index ข้างบน ตัวแรกตอบอะไร ใครได้แล้วตอบ ใช่ คนอื่นล่ะคะ ทำสัญลักษณ์มือให้ครูดูหน่อย ได้ไหม ตัวนี้เริ่มที่เท่าไร 0 ตัวนี้เป็น 1, 2 นี่ 3 แล้ว 4 5 6 ใช่ไหมคะ เพราะฉะนั้น ครูถามว่า index y ที่ 3 ตอบเท่ากับ... เท่ากับอะไรดีนี่ ๆ อยู่ด้านบน มันตรงกับอันไหน ไม่เห็นคึกคักแบบเมื่อกี้เลย เท่ากับ 10 ตอบเท่าไรข้างหน้าแถวที่ 2 แถวที่ 3 แถวที่ 1 เขาได้แล้วนะ ได้เท่าไรคะ ได้ 10 แถวที่ 2 นี่ y 3 เท่ากับ อะไร ใช่ ใช่ แล้วกลุ่มตรงนั้น คนอื่นถ้าได้แล้วดูตัวถัดไป อันนี้เท่าไร ใช่ 5 ถูกต้อง 5 ใช่ไหม มันตรง 5 ใช่ ตัวถัดไป y2 เท่ากับ 8 ตัวแรกได้ 10 นะ ตัวที่ 2 ได้ 5 นะคะ y2 ก็คือ 8 สิ่งสำคัญต้องเขียน index ให้ได้ใช่ไหมคะ พอเราได้ index เราก็จะเทียบค่าได้ ว่าถ้า index เป็น 3 อ๋อ เลข 3 มันตรงกับเลข 10 เราก็ตอบได้เลย 10 index เป็น 0 0 ตรงกับเลข 5 นะคะ เราก็ตอบได้เลยว่าคือเลข 5 เพราะฉะนั้น ข้างบนเป็นสิ่งที่เราต้องทดเองนะคะ เป็นสิ่งที่เราต้องทดเอง เขียนเองนะคะ เพราะโจทย์จะให้มาเป็น list นะคะ เป็น list แบบนี้ เพื่อนบอกว่าอยากทำอีก ครูมีโจทย์ให้ ตัวเลขยาวมากเลย a index เป็น 5 a index เป็น 10 ครูเอาตัวเลขไกล ๆ เลย ดูสิจะตอบเท่าไร ข้อมูลเยอะมากเลย ช่วยครูหาหน่อยว่า a 9 ไอ้ 9 คืออะไร ใช่ไหม ถ้าเรายังไม่รู้เราก็ใส่ก่อนนะ 1, 2, เพื่อความชัวร์นะคะ เราก็ใส่หมายเลข index ไว้เลยในกระดาษของเรา 5, 6 เราตอบเท่าไรนะ โอเค แถว 2 ได้เท่าไรคะ ใช่ โอเคอันนี้ล่ะคะ 5 ต้องตอบนี้ แล้วดูจากข้างบน มันเท่ากับ 2 ใช่ต้องเท่ากับ 2 ตัวนี้ค่ะ ตัวนี้เราดูจากค่า index ต้องดูจากข้างบนนะ มันถึงจะตอบ = 6 เดี๋ยวนะคะ ครูเขียนดี ๆ ก่อน a 5 5 ตอบอะไรคะ อะไรคะ a5 ใช่ ข้อ 1 ตอบ 6 อันนี้ตอบอะไร เดี๋ยว อันนี้นะ 2 อันนี้ ๆ ตอบ 2 อันนี้ล่ะ ใช่ อันนี้ตอบ 9 อันนี้ตอบ 6 อันนี้ตอบ 2 ตัวข้อสุดท้ายตอบ 9 ใช่ไหมคะ ถูกไหม ครูดูตรงไหน index เป็น 5 ครูดูตรงหัวข้างบนนะ index เป็น 5 ค่าคืออะไร คือ 2 ก็เอามาใส่ นะคะ ถัดมา index เป็น 10 a 10 index เป็น 10 คือดูข้างบน แล้วค่าตรงนี้คืออะไร เอาตรงนี้มาใส่นะคะ ย้อนกลับจากข้อนี้นะคะ ครูถามว่า a index ที่เท่าไรตอบเท่ากับ 8 ตรงนี้ควรใส่เลขอะไร 8 คือตัวนี้ใช่ไหม ก็คือต้องเป็น 7 ถูกต้อง ใช่ ต้องเป็น 7 ถูกไหมคะ ใช่ a7 = 8 เพราะฉะนั้น พอได้ list แบบนี้แล้ว สิ่งที่ต้องทำถัดไป คือ เขียน index นะ เขียน index ข้างบน เราจะได้รู้ว่า index ที่ 9 คือค่าอะไร หรือถ้าต้องการค่า 8 มันอยู่ index ที่เท่าไรนะคะ ก็เอา 7 มาใส่ โอเค ลิสต์นะคะ ครูย้ำอีกทีหนึ่ง ลิสต์ต้องอยู่ภายใต้ก้ามปูเปิดและปิด ข้างในถ้ามีมากกว่า 1 ค่า ต้องใส่ , ตัวนี้เราเข้าถึงข้อมูล ทีละตัว ถูกไหมคะ x9 ก็จะได้ค่ามา 1 ตัว a5 ก็จะได้ค่ามา 1 ตัว ถ้าเราอยากจะได้ค่าข้อมูลทั้งหมดที่อยู่ในลิสต์ ก็คือโชว์ค่าทั้งหมดที่อยู่ใน list จะทำอย่างไร เราสามารถเข้าถึงข้อมูลโดยการใช้ loop for มันสามารถทำงานแบบวันซ้ำ คือ ทำหลายรอบ แล้วเขาจะถึงข้อมูลอะไรออกมา ก็คือข้อมูลที่อยู่ในลิสต์ for x in thislist ก็คือตัวนี้ เพราะฉะนั้น list เรามีค่าอะไรบ้าง apple, banana, cherry ค่าเหล่านี้ทำงานแต่ละรอบจะเอามาใส่ที่ตัวแปร x แล้ว จะ print apple ก่อนถูกไหม เพราะ apple มันเป็นตัวแรกน่ะ ถัดมา banana ตัวถัดมาคือ cherry นะคะ มันจะทำงานทั้งหมดกี่รอบ คำสั่งนี้ทำงานทั้งหมดกี่รอบเอ่ย ดูสิทำงานกี่รอบ thislist มีข้อมูลกี่ตัว 3 ตัว เพราะฉะนั้น ทำงานกี่รอบคะ 3 รอบ นี่ไง รอบที่ 1 x = apple รอบที่ 2 x = banana รอบที่ 3 x=cherry ตามจำนวนข้อมูลที่มี แต่ถ้าเราต้องการ index ออกมาด้วย คำสั่งเมื่อก่อนหน้านี้เราจะได้เฉพาะค่าเห็นไหมคะ เราจะได้เฉพาะค่าออกมา แต่ถ้าเราบอกว่าเราต้องการ index ออกมาด้วย อยากรู้ว่า apple อยู่ เราใช้คำสั่ง ที่เรียกว่า Innomaerage นะคะ แล้วก็ใส่ชื่อ list แล้วค่าที่เก็บในตัวแปรข้างหน้าจะมีอยู่ 2 ตัว ตัวแรก คือ index ตัวที่ 2 ก็คือ ค่า เสร็จแล้วเราค่อย print นะคะ index ค่าออกมา รอบแรกจะได้ 0 apple รอบที่ 2 จะได้ 1 banana รอบที่ 3 จะได้ index ก็คือ 2 แล้วค่าก็คือ cherry คราวนี้เดี๋ยวเรามาเขียนโปรแกรมหน่อย ทุกคนเข้าที่ Classroom ไหมคะ ใน Classroom ครูมีครูต้อง... ครูต้องเปิดเว็บน่ะค่ะ ช่วยเปิดเว็บให้ครูหน่อย ทุกคนเข้าไปที่ Google Classroom ครูจะใส่ Python ide เอาไว้ให้ เห็นไหมคะ คลิกเปิดมาหน่อยเร็ว ตั้งแต่วันนี้นะ คลิกเข้าไปเลยลิงก์ตัวนี้ คลิกหรือยังคะ กำลังเข้ารหัสอยู่นะคะ จำได้ไหม รหัส... เสร็จแล้วจะเข้าหน้าตัวนี้นะคะ ก็คือชื่อเว็บ Online-Python.com ถ้าใครเข้าแล้วลบสิ่งที่อยู่ที่หน้าจอให้หมดเลย ใช่ไหม เดี๋ยวนะ เดี๋ยวครูขยายให้ โอเค ทุกคน อยู่ที่หน้านี้แล้วนะคะ เดี๋ยวเราจะลองเข้าถึงข้อมูลที่อยู่ในลิสต์นะคะ โดยการใช้ loop for อันดับแรก ครูกำหนดค่าในลิสต์ก่อนนะคะ ทุกคนพิมพ์ตามครูเลยนะคะ ค่าใน list คือ 1, 2, 3, 4, 5 อันนี้คือสมมตินะ ครูใส่ข้อมูลที่อยู่ใน list เห็นนะคะ เสร็จแล้วเคาะ Enter ขึ้นบรรทัดที่ 2 เราใช้ loop for นะคะ ตั้งชื่อตัวแปร ว่า value in x แล้วก็ใส่ ; หมายความว่า ค่าที่อยู่ใน x นะคะ คือในแต่ละค่า ทำงานรอบที่ 1 จะเอาค่า 1 มาแทนที่ Value นะคะ ทำงานรอบที่ 2 ก็เอาค่า 2 ทำงานรอบที่ 3 ก็คือค่า 3 เสร็จแล้ว ครูต้องการให้ print ค่า i ออกมาดูหน่อย ว่ามันเป็นอย่างไร พูดผิดค่ะ ไม่ใช่ i ขออภัย ต้องเป็นอะไรคะ value นะ เพราะว่า... เพราะว่าอะไร เพราะว่าค่าตัวนี้ที่มาใส่เป็น Value เพราะฉะนั้นมันต้องแสดงค่า value ออกมา เสร็จแล้วกด RUN เลย เราได้ค่าข้างบนไหมคะ ใส่ โอเค ทีนี้ ดูต่อ เมื่อกี้เราพูดไปแล้วนะ ว่าเวลาเราต้องการเข้าถึงค่าข้อมูลทีละค่านะคะ เช่น เมื่อกี้นะ a index เป็น 10 ถ้าเราอยากจะเช็กว่า เอ๊ะ คำตอบที่เราหาเมื่อกี้มันใช่ไหม เราสามารถเอามา Run ใน Python ได้ เช่น เรามีค่าข้อมูล 1, 2 , 3, 4, 5 ครูอยากรู้ว่า x index เป็น 2 มีค่าเป็นอะไร x index เป็น 2 เรามีค่าอะไร เดี๋ยวนะ เราก็สามารถจะหาค่าคำตอบได้นะว่า x index เป็น 2 เอ๊ะ คำตอบมีค่าเป็น 3 นะคะ เราสามารถเช็กคำตอบได้ว่าเมื่อกี้ที่ตอบเราถูกไหม โดยการใช้คำสั่ง print ใช่ไหมคะ แล้วครูต้องการแสดงค่าคำสั่งนี้ ออกมาที่หน้าจอ ครูก็เขียนอยู่ภายใต้ Double Quote แล้วตามด้วย , แล้วเขียน index เป็น 2 มีค่าเป็นอะไร คำตอบที่ได้คือมีค่าเป็น 3 ลองดู ครูเปลี่ยนได้นะ สมมติครูเปลี่ยนค่าตรงนี้เป็น 0 ลอง test ได้ ลองทดสอบได้ มันก็จะเปลี่ยนค่าตรงนี้ให้ ลองทดสอบได้นะคะ เปลี่ยนค่า index เป็นอะไร โอเคนะคะ หน้านี้ข้างไว้นะ ยังไม่ต้องปิดนะคะ หรือย่อลงมาก็ได้ เดี๋ยวเราจะมาทำต่อ ถัดมา โอเคไหม ครูไปต่อได้หรือยังคะ โอเค ถ้าเราต้องการหาขนาดของ list ขนาดคืออะไร ใน list เราน่ะมีข้อมูลกี่ตัว อันนี้คือขนาดของ list นะ ใช่ไหมคะ เรานับเลย 1, 2, 3, 4 list เรามีขนาดกี่ตัว list เรามีขนาดกี่ตัว เช่น x ตัวนี้ ตัวแปร x มีขนาดเท่าไร มีข้อมูลกี่ตัวคะ 8 ถูกไหม 8 ตัว 1, 2, 3, 4, 5, 6, 7, 8 มีข้อมูล 8 ตัว ถ้าเราอยากให้คอมพิวเตอร์หาขนาดของ list ให้ โดยที่เราไม่ต้องมานั่งนับเองทำอย่างไร เราใช้คำสั่งที่ชื่อว่า len l-e-n นะคะ เราใช้คำสั่งคำว่า "len" ตามด้วยวงเล็บเปิด แล้วใส่ชื่อ list นะคะ แล้วใส่ชื่อ list มันก็จะแสดงขนาดของ list โดยนับจำนวนข้อมูลที่อยู่ในลิสต์ว่ามีกี่ตัว ถ้าเราต้องการให้แสดงออกมาที่หน้าจอ ก็ใช้ Print นะคะ print (len แล้วตามด้วยชื่อ list แล้ววงเล็บปิด len คือขนาดนะคะ ครูมี x นะคะ len (x) ก็คือจะค่าได้เท่ากับ 8 คำสั่งถัดมา ถ้าเราต้องการเพิ่มข้อมูลตัวใหม่ลงไปใน list ลงไปใน list เพิ่มข้อมูลใหม่ลงไปใน list จะใช้คำว่า append append แล้วตามด้วยวงเล็บเปิด ข้อมูลตัวใหม่ที่ต้องการจะใส่ลงไปใน list เช่น list thislist ใช่ไหมคะ มีข้อมูลอยู่ 3 ตัว คือ apple, banana แล้วก็ cherry ครูบอกว่าครูอยากเพิ่มข้อมูลตัวใหม่ คือ orange list นี้โดยไป ต่อท้ายคำว่า "cherry" เราจะใช้คำสั่งอะไร เราก็ใช้คำสั่ง append นะคะ append เวลาเราเขียนคำสั่งเราเขียนอย่างไร ชื่อ list ตามด้วย . ตามด้วยคำสั่ง append วงเล็บเปิด แล้วก็ค่าข้อมูลตัวใหม่ แล้วก็วงเล็บปิด เช่น ต้องการเพิ่ม orange ใช่ไหมคะ ก็เป็น thislist.append (orange วงเล็บเปิด แล้วก็ใส่ orange มันเป็น Sting ใช่ไหม ต้องใส่ Double Quote แล้วก็วงเล็บปิดนะคะ เราอยากรู้ว่ามันเข้าไปจริงหรือเปล่า มันใส่ได้จริงหรือเปล่านะคะ ก็ใช้คำสั่ง print print คือแสดงคำสั่งที่หน้าจอใช้ print (thislist) มี all เพิ่มให้แล้วอยู่ท้ายสุดเลย แล้วลบบ้าง ทำอย่างไรคะลบ เมื่อกี้เพิ่มแล้วนะใช้ append ลบใช้อะไรคะ remove ลบคือใช้คำสั่ง Remove นะคะ วิธีการลบ ลบอย่างไร ชื่อ list. คำว่า remove วงเล็บเปิด ค่าที่ต้องการลบ สมมติว่าครูต้องการลบข้อมูล banana ออก ก็เป็น thislist.remove ( ใส่ค่า banana ที่ต้องการจะลบแล้วก็วงเล็บปิด เสร็จแล้วกด RUN ถูกไหม banana ก็จะถูกลบไป เช็กว่ามันลบไปจริงหรือเปล่า ใช้ print (thislist) วงเล็บปิด เห็นไหมคะ banana หายไปแล้ว โอเค คำสั่งพวกนี้นะ ถ้าเราจำไม่ได้ไม่เป็นไรนะคะ เราเปิดดูได้นะ เวลาเขียน Code เราจะจำทุกคำสั่งไม่ได้เราเปิดดูได้ว่าถ้าเราจะเพิ่มเราใช้คำสั่งอะไร ถ้าเราจะลบใช้คำสั่งอะไรนะคะ ถ้าจำไม่ได้ก็เปิดดูได้นะ คราวนี้ถัดมา ลบอีกแบบหนึ่ง remove คือ ลบโดยใส่ค่าที่ต้องการจะลบ อีกตัวหนึ่งวิธีการลบคือการใช้ del d-e-l มาจาก Delete นะคะ โดยการระบุ Index ที่เราต้องการจะลบ รู้ตำแหน่งที่เราต้องการจะลบข้อมูลตัวนั้น สามารถใช้ del ได้ del วรรคแล้วตามด้วย ก้ามปูเปิดใส่ index แล้วก็ก้ามปูปิดนะคะ เช่น ครูต้องการจะลบข้อมูลที่ index = 0 ก็คือ apple ใช่ไหม วรรค thislist ก้ามปูเปิด แล้วก็ก้ามปูปิดสิ่งที่ได้ ก็คือ apple หายไปแล้ว ก็จะเหลือแค่ banana กับ cherry นะคะ ถัดไป ดูไปเรื่อย ๆ กับครูก่อนนะเดี๋ยวครูจะให้ปฎิบัติ ถ้าเราต้องการเข้าถึงข้อมูลทีละหลาย ๆ ค่าบ้างทำอย่างไร ตายแล้ว ต้องการเข้าถึงข้อมูลหลาย ๆ ค่า ก็คือคำตอบน่ะ อยากได้ข้อมูลออกมาหลาสย ๆ ตัวออกมาทีเดียวเลย เมื่อกี้ เราเข้าถึงทีละตัวใช่ไหมคะ ทีนี้เราอยากได้คำตอบออกมาหลาย ๆ ตัวทำอย่างไร ครูมี list ตัวนี้นะคะ ชื่อ My list ครูมีตัวอักษรนะ เป็นตัวอักษรภาษาอังกฤษ ตัว p, ตัว r, ตัว o, ตัว g ตัว r, ตัว a, ตัว m ตัว z เราเริ่มต้น index = 0 นะคะ เราเริ่มต้น Index เท่ากับ 0 ตัวแรก range my_list ใน my-lis ที่ชื่อ my_list นี่ มีเท่าไร มีจำนวนเท่าไร มีจำนวนกี่ตัวคะ 1, 2, 3, 4, 5, 6, 7, 8, 9 มีทั้งหมดกี่ตัวคะ 9 ตัว นึกออกไหม นับ จำนวนที่อยู่ใน list มีกี่ตัว นับจำนวนที่อยู่ใน list มี 9 ตัว ก็คือมี 9 ตัว ถัดมา ถ้าเราต้องการเข้าถึงข้อมูลนะคะ ที่เป็นช่วงก็คือตั้งแต่ index ที่ 2 อย่างเช่น ครูต้องการเข้าถึงข้อมูลนะคะ my_list ตั้งแต่ 2 : แล้วก็เลข 5 ครูเอาข้อมูลที่ได้คืออะไรนะคะ ครูจาก my_list ลงมาใส่ในช่องแล้วครูก็กำหนด index ใช่ไหม อันนี้คือ index แล้วครูก็กำหนด index 0 1 2 3 4 5 6 7 8 ตัวสุดท้ายคือ 8 ครูบอกว่า my_list นี่ 2:5 จะได้คำตอบอะไร อยู่ที่นี่ใช่ไหมคะ 2 ก็คือได้ o แล้ว จนถึงเลข 5 นะคะ แต่เวลาเราดึงค่าออกมาให้ลดลง 1 เพราะฉะนั้น จะถึงแค่ 4 ถูกไหมคะ เพราะฉะนั้น ค่าที่ได้ ก็คือตั้งแต่ 2 จนถึง 4 ก็คือ o, g, r โอเค ถัดมา my_list 5 คือเริ่มที่ 5 ใช่หรือเปล่าคะ เริ่มที่ 5 จนถึงไม่ระบุ จนถึงไม่ระบุคืออะไร ก็เอาจนถึงตัว สุดท้าย ก็ได้ a m i z เห็นไหมคะ ถ้าไม่ระบุตำแหน่งอะไรเลย ก็คือได้ทุกตัว ก็คือได้ทุกตัวนะคะ ดูตัวอย่างถัดไป เดี๋ยวครูให้ทำแบบฝึกหัดนะคะ ครูมี list อยู่ทั้งหมด 9 ตัวนี้นะคะ list ครูคือตัวนี้ ครูต้องการข้อมูล r, o, g คือตัวนี้ ครูจะกำหนด Index เป็นเท่าไร r อยู่ที่ตำแหน่งที่เท่าไรคะ ที่ 1 g อยู่ตำแหน่งที่เท่าไรคะ 3 ใช่ไหมคะ บวกเพิ่มไปอีก 1 กลายเป็น 4 ลองดูนะ a กับ m ก็คือเป็น 5 - 7 g กับ x ก็คือ 3 - 5 p กับ r ก็คือ 0, 2 โอเค แป๊บหนึ่ง เดี๋ยว ๆ ครูเอาใหม่ คราวนี้ทุกคนดูนะคะ เราลองช่วยกันทำหน่อยสิ ว่าครูให้ list มานะคะ list ครูคือ x นะคะ x มีค่าเป็นอะไรบ้าง x = 2, 4, 6, 8 แล้วก็ 10 โอเค ครูกำหนดให้ x นี่ เป็น list มีค่าอยู่ 5 ตัว len (x) อยู่ 5 ถูกไหม x มีขนาดเท่ากับ 5 x มีขนาดเท่ากับ 5 ครูกำหนดค่า Index ไว้ให้ เอามาลงช่องเรียบร้อยแล้ว ใส่ค่า index ไว้ให้เลย ช่วยครูทำหน่อย 5 ข้อ x0 ตอบอะไร x index 3 ตอบอะไร อย่าเพิ่ง x index ตอบอะไร x index 2-4 x index 0-3 ตอบอะไรคะ ถ้าไม่ได้ ดูสไลด์ก่อนหน้านี้ ครูมีตัวอย่างให้ดูนะคะ อันนี้ตัวอย่างที่แล้วนะ แล้วอันนี้คือสิ่งที่ครูต้องการให้หา ถ้าสงสัยเทียบกับตัวเดิม มันได้มาได้อย่างไรนะ แล้วตัวใหม่เราจะใส่ค่าอะไรดีคำตอบไม่ใช่เอามาแค่ตัวเลขอย่างเดียวนะ มันต้องอยู่ในไหนคะ เอามาในไหนคะ มันต้องอยู่น list ก็ต้องเขียนก้ามปูเปิดปิดด้วยนะคะ อันที่หลายค่าต้องใส่ก้ามปูเปิดปิดให้ครู แต่ถ้าเป็นค่าเดียว ก็ใส่ index ตัวเดียวก็ใส่ค่าออกมาเลย ออกมาเลย โจทย์ครูคือตัวเลขตัวนี้นะคะ อันนี้คือตัวอย่างนะ อันนี้คือตัวอย่างเฉย ๆ ไม่เกี่ยวกัน นี่ อันนี้คือตัวอย่าง ไม่แน่ ที่เหลือเป็นตัวอย่างหมดเลย ลองทำดู