คุณเชื่อได้ไหม
ฉันหวังว่าฉันไม่ได้ส่งคุณเข้านอน แต่เราใกล้จะถึงแล้ว
เรามีชุดข้อมูลหลักชุดสุดท้ายแล้วเสร็จ
ฉันรู้ ฉันรู้ว่านี่ไม่ใช่หัวข้อที่น่าตื่นเต้นที่สุด
เชื่อฉันเถอะ นี่เป็นส่วนที่ยากที่สุด
เมื่อคุณเริ่มต้นและคุณเพียงแค่เรียนรู้สิ่งเหล่านี้โดยไม่เข้าใจ
ทำไมฉันถึงต้องการสิ่งนี้
ฉันจะสร้างเกมต่อไปได้อย่างไร
ฉันจะสร้าง Netflix ต่อไปได้อย่างไร
ฉันจะสร้างแอพ Apple ที่ยอดเยี่ยมที่สุดตัวต่อไปได้อย่างไร
คุณกำลังดูสิ่งนี้และกำลังคิด ฉันเพิ่งเรียนรู้ทฤษฎีมากมาย
ฉันรู้สึกเหมือนฉันอยู่ในชั้นเรียนคณิตศาสตร์อีกครั้ง
ฉันรู้.
เชื่อฉันเถอะ ฉันเคยผ่านมันมาแล้ว
ฉันเป็นโปรแกรมเมอร์ที่เรียนรู้ด้วยตนเองเช่นกัน
นี่คือตัวต่อเลโก้ที่สร้างรากฐานของเรา
เมื่อเราเรียนรู้สิ่งเหล่านี้ เราสามารถก้าวไปสู่สิ่งใหม่ๆ ได้ และคุณจะเห็นว่าเมื่อคุณปีนภูเขาเล็กๆ
แห่งนี้ สิ่งต่างๆ จะง่ายขึ้นมากและคุณจะตระหนักถึงพลัง
เมื่อเราเริ่มสร้างโครงงานเหล่านี้ในช่วงท้ายชั้นเรียน ซึ่งคุณจะพูดว่า โอ้ บล็อคทั้งหมดที่เราได้เรียนรู้
ส่วนที่น่าเบื่อทั้งหมดนี้จะสมเหตุสมผล
ดังนั้นแขวนอยู่ที่นั่น
มันคงยาก
มันอาจจะยาก แต่คุณจะเห็นในไม่ช้าว่าทำไมสิ่งนี้ถึงทรงพลัง และทำไมสิ่งที่เราเพิ่งเรียนรู้จะช่วยให้เราสร้างสิ่งที่ยอดเยี่ยมจริงๆ
และสร้างโปรแกรมที่ยอดเยี่ยมขึ้นมาได้
มาปิดท้ายกันด้วยอันสุดท้าย ชนิดข้อมูลสุดท้าย โครงสร้างข้อมูลสุดท้ายที่เราเห็นใน Python
อย่างน้อยก็จากโครงสร้างหลัก
และเรียกว่าชุดและชุดเป็นคอลเลกชันที่ไม่ซ้ำของวัตถุที่ไม่ซ้ำกัน
อืม.
มาดูกันเลย
มาสร้างชุดและชุดของฉันกัน
เราสร้างด้วยวงเล็บปีกกาเหมือนพจนานุกรม
แต่แทนที่จะเป็นพจนานุกรม เราไม่มีคู่ของค่าคีย์
แต่เรามีค่าเช่น หนึ่ง สอง สาม สี่ ห้า
แค่นั้นแหละ.
นั่นมันชุด
เราเพิ่งสร้างชุด
แต่จำไว้ว่า คำจำกัดความที่ฉันให้คุณตั้งไว้คือคอลเล็กชันของอ็อบเจ็กต์ที่ไม่ซ้ำแบบไม่เรียงลำดับ
นั่นหมายความว่าอย่างไร?
ถ้าฉันพิมพ์สิ่งนี้และพูดชุดของฉันแล้วคลิกเรียกใช้
รับชุดค่ะ
แต่ถ้าฉันมี สมมติว่ามีอีกห้าในนี้และฉันคลิกเรียกใช้
โดยจะส่งคืนเฉพาะชุดเฉพาะหรือรายการเฉพาะที่คุณเห็นในชุดเท่านั้น
ไม่มีการซ้ำซ้อน
ทุกอย่างต้องมีเอกลักษณ์
ดังนั้นห้านี้จึงไม่เคยถูกเพิ่มเข้าไปในชุด
ตัวอย่างเช่น คุณสามารถเพิ่มสิ่งต่าง ๆ ในชุดเช่นชุดของฉัน จากนั้นฉันสามารถบอกว่าเพิ่มและให้ค่าเช่น
100
แล้วสมมุติว่าฉันทำ set dot ad ของฉันแล้วให้มันถ้าฉันคลิก run ที่นี่
ฉันเห็นว่าฉันสามารถบวก 100 ได้ แต่สองอัน สองตัวไม่ได้ถูกเพิ่มเข้าไปจริงๆ เพราะชุดของฉันมีข้อมูลนั้นอยู่แล้ว
มันเป็นคำสั่ง
ฉันหมายถึง เราได้สร้างหนึ่ง สอง สาม สี่ ห้าที่นี่ แต่ไม่มีระเบียบที่แท้จริง
ไม่มีชั้นวางหนังสือในพื้นที่ความทรงจำของเราที่อยู่ติดกัน
สิ่งเหล่านี้มีอยู่ในความทรงจำ แต่ชุดหนึ่งสามารถค้นหาได้เนื่องจากล้วนมีเอกลักษณ์
ดังนั้นพวกมันจึงอยู่ในที่เดียวในความทรงจำ
เลยขอถามแบบนี้
และนี่จะเป็นการออกกำลังกายเล็กๆ น้อยๆ ที่สนุกสนาน
ถ้าฉันให้อาร์เรย์แก่คุณ
และสมมุติว่ามีสิ่งนี้อยู่
ก็ตรงนี้ล่ะ
และฉันต้องการให้คุณส่งคืนอาร์เรย์ที่ไม่ซ้ำกัน
เลยอยากให้ทุกอย่างเข้าที่
สมมติว่า
เรียกมันว่ารายการของฉัน
และโปรแกรมเมอร์ได้สร้างสิ่งนี้ขึ้นมาแล้ว
ตกลง.
จากนั้นงานของคุณคือการสร้างหรือส่งคืนรายการหรือคอลเลกชันที่มีเฉพาะรายการที่ไม่ซ้ำ
คุณจะแปลงเป็นชุดได้อย่างไร?
เราเคยเห็นสิ่งนี้มาก่อน
เรามีชุดฟังก์ชันและเราเพียงแค่รวมรายการของฉันไว้ในชุดนั้น
และมาพิมพ์กัน
ฉันคลิกเรียกใช้
ตรวจสอบออก
เราได้สร้างชุดใหม่จากรายการ
และฉันได้ลบค่าที่ซ้ำกันทั้งหมด
สิ่งนี้จะมีประโยชน์เมื่อใด
ลองนึกภาพถ้าเรามีชื่อผู้ใช้ใช่ไหม?
หรือที่อยู่อีเมล
เรากำลังรวบรวมที่อยู่อีเมลในหน้าเริ่มต้นใช้งาน แต่เราไม่ต้องการให้มีอีเมลซ้ำกัน
เราอาจต้องการแปลงรายชื่ออีเมลนี้เป็นชุดและลบรายการที่ซ้ำกัน
ดังนั้นเราจึงไม่ส่งอีเมลซ้ำแล้วซ้ำอีก
นั่นมันเจ๋งจริงๆ
แล้วเรื่องนี้ล่ะ?
ให้ฉัน.
มาเปลี่ยนเป็นชุดกันเถอะ
เรียกมันว่าเซตของฉัน
มันจะเปลี่ยนเป็นชุด
ไปเลย
แล้วถ้าฉันต้องการเข้าถึงชุดที่ดัชนีศูนย์ล่ะ
อืม.
ชุดวัตถุไม่รองรับการจัดทำดัชนี
อีกครั้ง คุณสามารถคิดว่ามันเป็นพจนานุกรมได้มากกว่า
ในการเข้าถึงชุดเราต้องคว้าสิ่งของที่อยู่ในนั้น
นั่นเป็นกุญแจสำคัญในการรับข้อมูลจากหน่วยความจำ
วิธีที่เราจะตรวจสอบว่ามีบางอย่างอยู่หรือไม่คือเราเพียงแค่พูดว่า "เฮ้ เป็นหนึ่งในชุดของฉันและเราดำเนินการนี้
และเราจะได้รับความจริง
เราสามารถทำความยาวของชุดของฉันได้และเราก็ได้ห้า
อีกครั้ง ไม่มีอะไรบ้าเกินไป แต่หนึ่ง สอง สาม สี่ ห้า
จำไว้ว่ามันนับเฉพาะสิ่งที่ไม่เหมือนใครเพราะจะไม่มีวันเข้า
มันเป็นชุด
และเรายังสามารถแปลงเป็นรายการได้อีกด้วย
ถ้าฉันคลิกเรียกใช้ที่นี่ คุณจะเห็นว่าตอนนี้ฉันมีชุดเป็นรายการแล้ว
แล้วเราก็ทำได้ สมมุติว่าชุดดอทก๊อปปี้ของผม และที่จริงก็คัดลอกชุดของผมไปเป็นบางอย่าง สมมุติว่าใหม่
หรือชุดใหม่แล้วนี่จะต่างไปจากเดิมอย่างสิ้นเชิงหรือสำเนาใหม่กว่านี้ชุดเดิม
เลยลองมาทดสอบกันดู
ชุดใหม่นี้.
ถ้าฉันใช้วิธีที่เราอาจเคยเห็นมาก่อน ซึ่งเป็น set dot clear ของฉัน ซึ่งคุณสามารถจินตนาการได้
ล้างเซตแล้วฉันคลิกรัน
ฉันมีชุดใหม่
แต่เมื่อฉันพยายามพิมพ์ชุดเก่าของเรา ซึ่งเป็นชุดของฉัน มันจะเป็นชุดว่างและว่างเปล่า
แต่พลังที่แท้จริงของเซตมาในสองวิธีถัดไปที่ฉันจะแสดงให้คุณเห็น
และชุดมีวิธีค่อนข้างน้อย แต่ไม่ต้องกังวล ส่วนใหญ่จะคล้ายกันมาก
ลองสำรวจกันในวิดีโอหน้า