โกลอฟนา
หุ่นยนต์
ตัวสร้างรายการช่วยให้คุณสร้างรายการตามรายการที่มีอยู่ได้อย่างรวดเร็ว
ตัวสร้างเพิ่มเติมสามารถใช้เพื่อสร้างรายการตามประเภทใดก็ตามที่กำลังวนซ้ำ (เช่น แถวหรือสิ่งอันดับ)
เป็นผลให้ลูปสร้างรายการเดียวกัน:
["8", "h", "o", "s", "t"]
นิพจน์อัจฉริยะในตัวสร้างรายการ
ตัวสร้างรายการสามารถใช้นิพจน์อัจฉริยะเพื่อเปลี่ยนรายการที่มีอยู่หรือประเภทข้อมูลล่าสุดอื่นๆ และสร้างรายการใหม่ได้
มาดูตัวสร้างด้วยนิพจน์ if:
fish_tuple = ("ปลาปักเป้า", "ปลาการ์ตูน", "ปลาดุก", "ปลาหมึกยักษ์")
รายการปลา =
พิมพ์ (รายการปลา)
รายการ vikory มีทูเพิล fish_tuple เป็นพื้นฐานสำหรับ fish_list ใหม่
คำสำคัญสำหรับและในใช้ในลักษณะเดียวกับในโลกอดีต
นอกจากนี้ ตัวสร้างยังมีแบบฟอร์ม if ซึ่งเป็นสาเหตุที่รวมแถวปลาหมึกยักษ์ไว้ในรายการ
ใช้แทนรายการ fish_list และกำหนดค่าใหม่เพื่อรวมองค์ประกอบ fish_tuple ทั้งหมด ยกเว้น 'octopus'
["ปลาปักเป้า", "ปลาการ์ตูน", "ปลาดุก"]
ดังที่คุณทราบ คุณสามารถแยกองค์ประกอบเพลงออกจากรายการใหม่ได้ด้วยความช่วยเหลือของการแสดงออกทางจิตใจ
ตอนนี้เรามาดูอีกตัวอย่างหนึ่ง ซึ่งใช้การดำเนินการทางคณิตศาสตร์ ตัวเลข และเมธอด range()
พิมพ์(หมายเลข_รายการ)
อ่านเพิ่มเติม:
รายการใหม่ number_list มีค่ากำลังสองขององค์ประกอบที่จับคู่สกินในช่วง 0-9
พิมพ์(หมายเลข_รายการ)
อ่านเพิ่มเติม:
ผลลัพธ์จะเป็นดังนี้:
ลองมาดูที่ก้นนี้ทีละคน
พิมพ์(หมายเลข_รายการ)
ใช้แทนรายการ fish_list และกำหนดค่าใหม่เพื่อรวมองค์ประกอบ fish_tuple ทั้งหมด ยกเว้น 'octopus'
หากคุณแทนที่ x ** 2 สำหรับ x และเพียง vikorize x สำหรับ x รายการจะมีลักษณะดังนี้:
number_list=
พิมพ์(หมายเลข_รายการ)
ใช้แทนรายการ fish_list และกำหนดค่าใหม่เพื่อรวมองค์ประกอบ fish_tuple ทั้งหมด ยกเว้น 'octopus'
พิมพ์(หมายเลข_รายการ)
หลังจากนั้น การแสดงออกทางจิตใจก็ถูกเพิ่มเข้าไปในเครื่องกำเนิด:
Viraz หากรวมหมายเลขที่ไม่ได้จับคู่ทั้งหมดจากรายการรายการใช้โค้ดสามแถว
แต่เครื่องกำเนิดต้องการเพียงสิ่งเดียวเท่านั้น:>>> ก = >>> ก
- การออกแบบเป็นตัวกำเนิดน้ำล้น
- โครงสร้างทั้งหมดจะต้องอยู่ในรายการสี่เหลี่ยมจัตุรัส ซึ่งแสดงโดยรายการพับ
- ตรงกลางแขนมีสามส่วน: สิ่งที่ใช้ได้ผลจากองค์ประกอบต่างๆ (ในสถานการณ์ของเรา เราไม่ได้ทำอะไรเลย เราแค่เพิ่มมันเข้าไปก่อนที่จะโอเวอร์โฟลว์)ภราดรภาพคืออะไร (เราใช้องค์ประกอบ i)
ดวงดาวเป็นพี่น้องกัน (จากวัตถุพิสัย)
เพื่อเสริมความแข็งแกร่งของชิ้นส่วน vikorystvoemoคำหลัก
- ในและเพื่อ
- มาดูก้นกันบ้าง
- >>> ก = >>> ข = >>> ข
ดาว:
Robimo - มาสร้างองค์ประกอบของเราที่จัตุรัสกันดีกว่าเบเรโมเป็นองค์ประกอบ ดาว – จากรายการก.>>> a = (1:10, 2:20, 3:30) >>> b = สำหรับฉัน ใน a] >>> b
ที่นี่เราใช้คีย์จากพจนานุกรม และรายการที่สร้างขึ้นจะใช้ค่าของคีย์ตามค่าที่มีอยู่>>> a = (1:10, 2:20, 3:30) >>> b = [] สำหรับฉัน ใน a] >>> b [, , ] >>> c = >>> c
ในถึงผู้ชายคนนี้
แต่เครื่องกำเนิดต้องการเพียงสิ่งเดียวเท่านั้น:รายการ b มีรายการที่ซ้อนกัน
เมื่อละเว้นวงเล็บเหลี่ยมในเครื่องกำเนิดไฟฟ้าด้านหลัง viraz ลำดับจะถูกลบออก
หากคุณต้องการรายการเพียร์พร้อมคีย์และค่าพจนานุกรม คุณจะต้องนำรายการไฟล์แนบแล้วสร้างส่วนประกอบอื่นๆ
เพื่อหลีกเลี่ยงการก่อสร้างที่ซ้อนกันนี้สำหรับ
ไวยากรณ์ดั้งเดิมสำหรับการสร้างการเปลี่ยนแปลงมีลักษณะดังนี้: >>> c = >>> for i ใน b: ... สำหรับ j ใน i: ... c.append(j) ... >>> cการสร้างมุ่งเน้นไปที่คุณค่าที่จำเป็นของวัตถุเป็นหลัก ในกรณีนี้ หากมีองค์ประกอบลำดับไม่มากนัก ก็สามารถแยกองค์ประกอบเหล่านั้นออกทีละรายการได้ หากจำนวนเกินโหลคุณควรคิดอย่างจริงจังเกี่ยวกับการเพิ่มตัวสร้างลงในรายการการออกแบบนี้จะทำให้คุณมั่นใจได้.
เติมอัตโนมัติ
ตามคำแนะนำในการร้องเพลง
ก้นที่น่ารังเกียจแสดงให้เห็นถึงการสร้างรายการตัวเลขของ Python โดยใช้ตัวสร้าง
เปลี่ยน i є ส่งไปยังข้อมูลข้อมูลองค์ประกอบปัจจุบัน
ฟังก์ชัน range ที่นี่รับอาร์กิวเมนต์สองตัวที่กำหนดขอบเขตระหว่างลำดับจำนวนเต็มที่สร้างขึ้น
ข้อมูลจะแสดงบนหน้าจอโดยวิธีการพิมพ์
>>> ข้อมูล = >>> พิมพ์ (ข้อมูล) ตัวสร้างรายการ Python 3 ใช้งานได้กับค่าตัวเลขเท่านั้นตามที่แสดงการโจมตี ตัวสร้างสามารถส่งอาร์กิวเมนต์ไปยังแถวหรือเขียนลงไปได้
ตามคำแนะนำในการร้องเพลง
>>> ข้อมูล = >>> พิมพ์ (ข้อมูล) ["p", "y", "t", "h", "o", "n"]
ด้วยเหตุนี้โค้ดนี้จะสร้างรายการอักขระที่มีแถวเอาต์พุต
เช่นเดียวกับก้นด้านหน้า คุณสามารถแสดงชุดข้อมูลบนหน้าจอโดยใช้วิธีการพิมพ์ที่กล่าวไปแล้วเครื่องกำเนิดมีสมอง
ตามคำแนะนำในการร้องเพลง
หนึ่งในวิธีที่ได้รับความนิยมมากที่สุดในการสร้างรายการใน Python คือคลื่นสมอง
ก้นด้านหน้าแสดงให้เห็นแนวทางที่ชัดเจนในการกรอกรายการเครื่องกำเนิดไฟฟ้าเพิ่มเติม
บางครั้งโปรแกรมจำเป็นต้องมีหลายรายการที่มีสมาชิกมากกว่าหนึ่งคน
ตัวอย่างเช่น อาจจำเป็นต้องใช้ชุดข้อมูลที่หลากหลายเมื่อทำงานกับเมทริกซ์ทางคณิตศาสตร์
เพื่อจุดประสงค์นี้ คุณสามารถใช้ตัวสร้างใน Python ได้โดยเพียงแค่วางลูปเพื่อสร้างรายการหนึ่งตรงกลางรายการอื่นพื้นที่ปิดล้อมสำหรับรายการที่ซ้อนกันจะเป็นแบบแขนสี่เหลี่ยม ดังแสดงในตัวอย่างด้านล่าง
>>> data = [ สำหรับ j อยู่ในช่วง (0, 3)] >>> พิมพ์ (ข้อมูล) [, , ]
รหัสนี้
สาธิตการสร้างเมทริกซ์สองมิติ 3x3 โดยใช้ตัวสร้างรายการสองมิติของ Python
องค์ประกอบของลำดับตัวเลขนี้คือค่าดิจิทัลของวิธีช่วงเช่นเดียวกับที่อยู่ด้านหน้า การเปลี่ยนแปลง i และ j ทีละรอบ เพิ่มรอบทีละหนึ่ง และคูณกันเองฟังก์ชันการพิมพ์ทำหน้าที่เป็นรูปภาพของชุดข้อมูลที่สร้างขึ้นบนหน้าจอคอมพิวเตอร์ เมทริกซ์ของตัวสร้างศูนย์มักใช้เมื่อสร้างรายการที่ซ้อนกันของ Pythonก้นจามรีเป็นเมทริกซ์ที่ละลายน้ำได้ 3×2:
>>> data = [ สำหรับ y อยู่ในช่วง (3)] >>> พิมพ์ (ข้อมูล) [, , ]
รายชื่อเครื่องกำเนิดแลมบ์ดา
ดังที่คุณทราบ ฟังก์ชัน lambda ใน Python เป็นการดำเนินการที่หมุนเวียนค่า
เปเรวาโกยา
กลไกนี้ นี่คือความเป็นไปได้ของความซบเซาท่ามกลางไวรัสสิ่งนี้ช่วยให้คุณเปลี่ยนรหัสที่โปรแกรมเมอร์พิมพ์ได้อย่างมากเนื่องจากในสถานการณ์นี้ไม่จำเป็นต้องระบุอย่างชัดเจน
วิธีการใหม่
เมธอดในไลบรารีนี้ช่วยให้คุณสร้างรายการโดยใช้การวนซ้ำที่สั้นกว่าได้ ตัวอย่างเช่น,ด้วยความช่วยเหลือนี้ คุณสามารถสร้างชุดค่าผสมต่างๆ ทั้งเชิงสัญลักษณ์และตัวเลขได้อย่างง่ายดาย
ตามคำแนะนำในการร้องเพลง
- รหัสที่ไม่เหมาะสมคือการคลิกที่รายการซ้ำโดยคลิกที่ฟังก์ชันทำซ้ำ
ดังที่เห็นได้ชัดจากผลลัพธ์ที่ได้ วิธีการจะหมุนลำดับของวัตถุใหม่ (แต่ละอันมีหมายเลข 1) ทำซ้ำ 5 ครั้ง
วิสโนวอค ใส่มันเข้าไปความสามารถในการทำงาน
ซึ่งแสดงใน Python โดยตัวสร้างรายการ ช่วยให้โปรแกรมปรับปรุงความเร็วและประสิทธิภาพของการประมวลผลข้อมูล กลไกที่กล่าวถึงในที่นี้ประกอบด้วยการสร้างทั้งรายการหลักและหลายโลกโดยอิงตามความคิดโบราณ เช่นเดียวกับวัฏจักรรองนอกจากนี้ยังมีความสามารถในการสร้างนิพจน์ lambda โดยใช้ไลบรารี intertools
การเขียนโปรแกรมสกินมีฟีเจอร์หนึ่ง นั่นคือแบบพับหรือแบบง่ายเป็นพิเศษ
อย่างที่คุณเขียนไว้ก่อนหน้านี้ในเหมืองอื่น คุณอาจไม่โกรธกับเรื่องนี้ เศษชิ้นส่วนนั้นเป็นของคุณ ภาษาเก่ามิได้รู้สึกอย่างนี้มากนัก (เมื่อก่อนข้าพเจ้ากระทำอยู่ แต่กลับรู้สึกอย่างแรงกล้าในสิ่งอื่นนี้) ในส่วนนี้คุณจะพบกับเครื่องมือสร้างรายการ พจนานุกรม และการคูณ - แนวคิดสามประการที่เกี่ยวข้องกัน ซึ่งเน้นไปที่เทคโนโลยีที่แข็งแกร่งมากเพียงหนึ่งเดียวก่อนอื่น ฉันอยากจะใช้เวลาสักครู่จากการสนทนาของเราเพื่อบอกคุณเกี่ยวกับสองโมดูลที่จะช่วยคุณจัดการระบบไฟล์ในเครื่องของคุณ การทำงานกับไฟล์และไดเร็กทอรี Python 3 มาพร้อมกับโมดูล ระบบปฏิบัติการ "หมายถึง" อะไร ระบบปฏิบัติการ- ใช้ฟังก์ชันที่ไม่ใช่ส่วนบุคคลเพื่อดึงข้อมูลเกี่ยวกับไดเร็กทอรี ไฟล์ และกระบวนการในเครื่อง
ความคมที่ยอดเยี่ยม
(และในกรณีเช่นนี้ และสำหรับการบงการพวกเขา) Python แนะนำการรวมที่มีประสิทธิภาพมากยิ่งขึ้นอินเทอร์เฟซซอฟต์แวร์
- สำหรับ
- ระบบปฏิบัติการที่รองรับทั้งหมด
- เพื่อให้โปรแกรมของคุณสามารถรันบนคอมพิวเตอร์เครื่องใดก็ได้โดยมีโค้ดเฉพาะแพลตฟอร์มจำนวนขั้นต่ำ
แคตตาล็อกการทำงานในบรรทัด
เมื่อคุณมีความรู้เกี่ยวกับ Python คุณจะใช้เวลามากมาย เชลล์แบบโต้ตอบของ Python- เมื่อคุณยืดหนังสือเล่มนี้ออก คุณจะได้ก้นที่มีลักษณะดังนี้: การนำเข้าโมดูลใด ๆ จากโฟลเดอร์แอปพลิเคชันคลิกที่ฟังก์ชั่นของโมดูลนี้ คำอธิบายของผลลัพธ์ ประการแรก มีแค็ตตาล็อกการทำงานในปัจจุบันแต่คุณไม่รู้อะไรเลยเพราะไม่พบแคตตาล็อกตัวอย่างตามท้องถนน
- เพื่อแก้ไขปัญหานี้ คุณสามารถทำได้ 1 ใน 2 วิธี: ประการแรก มีแค็ตตาล็อกการทำงานในปัจจุบัน;
- หรือเพิ่มโฟลเดอร์ตัวอย่างไปยังคำขอของผู้ดำเนินการ
หรือเพิ่มไดเร็กทอรีการทำงานลงในโฟลเดอร์ตัวอย่าง ไดเร็กทอรีการทำงานปัจจุบันเป็นพารามิเตอร์โดยนัยที่ Python เก็บไว้ในหน่วยความจำสตรีมไดเร็กทอรีการทำงาน ทุกครั้งที่คุณทำงานในเชลล์ Python แบบโต้ตอบ ให้เรียกใช้สคริปต์ของคุณ
แถวคำสั่ง ภาษาเก่าหรือสคริปต์ CGI อยู่ที่นี่บนเว็บเซิร์ฟเวอร์
โมดูล |
|
รวมสองฟังก์ชันสำหรับการทำงานกับไดเร็กทอรีการทำงานที่แน่นอน |
|
>>> พิมพ์(os.getcwd()) |
|
รวมสองฟังก์ชันสำหรับการทำงานกับไดเร็กทอรีการทำงานที่แน่นอน |
ซี:\Python31
>>> ระบบปฏิบัติการ .chdir() การทำงานกับชื่อไฟล์และไดเร็กทอรีตั้งแต่ฉันเริ่มพูดถึงแคตตาล็อก ฉันอยากจะเปลี่ยนความเคารพของคุณให้เป็นโมดูล
โมดูล |
|
os.path - คุณสามารถวางฟังก์ชันให้ทำงานกับชื่อไฟล์และไดเร็กทอรีได้>>> พิมพ์ (os .path .join ( |
|
os.path , "humansize.py") )>>> พิมพ์ (os .path .join ( |
|
"/Users/pilgrim/diveintopython3/examples" |
|
>>> พิมพ์ (os .path .expanduser ("~" ) ) |
แถวคำสั่ง การทำงานกับชื่อไฟล์และไดเร็กทอรี>>> พิมพ์ (os .path .join (os .path .expanduser ("~" ) , "diveintopython3" , "examples" , "humansize.py" ) )
c:\Users\pilgrim\diveintopython3\examples\humansize.py คุณยังสามารถติดตั้งฟังก์ชันสำหรับแบ่งเส้นทางไฟล์ ชื่อโฟลเดอร์ และไฟล์ในที่จัดเก็บข้อมูลได้ |
|
>>> ชื่อพาธ = |
|
>>> os .path .split (ชื่อพาธ) |
|
, "humansize.py") |
|
>>> (dirname, ชื่อไฟล์) = os .path .split (ชื่อพาธ) |
|
>>>ชื่อไฟล์ |
>>> นามสกุล
".ไพ"
แถวคำสั่ง ดึงมาจากแค็ตตาล็อกโมดูล glob มีสัญลักษณ์ตัวแทนที่สามารถใช้ในเชลล์คำสั่งได้ โลก- นี่ก็เป็นอีกเครื่องมือหนึ่งที่มี
ห้องสมุดมาตรฐาน หลาม)
|
|
>>> ระบบปฏิบัติการ .chdir ( |
|
"ตัวอย่าง |
|
\\ฟีด-ns0.xml" |
การดึงข้อมูลเกี่ยวกับไฟล์
ระบบปฏิบัติการใดๆ จะจัดเก็บข้อมูลเกี่ยวกับไฟล์ (ข้อมูลเมตา): วันที่สร้าง วันที่แก้ไขล่าสุด ขนาดไฟล์ ฯลฯ Python จัดเตรียมข้อมูลเดียว ระบบปฏิบัติการเพื่อเข้าถึงข้อมูลเมตานี้
โมดูล |
|
รวมสองฟังก์ชันสำหรับการทำงานกับไดเร็กทอรีการทำงานที่แน่นอน |
|
สิ่งที่คุณต้องมีคือชื่อของไฟล์ |
|
c:\Users\pilgrim\diveintopython3\examples |
|
>>> ข้อมูลเมตา = os .stat ("feed.xml") |
|
>>> เมตาดาต้า.st_mtime |
เวลา .struct_time (tm_year= 2009 , tm_mon= 7 , tm_mday= 13 , tm_hour= 17 , tm_min= 25 ,
tm_sec = 44, tm_wday = 0, tm_yday = 194, tm_isdst = 1) สละเส้นทางอันเด็ดขาดส่วนหน้ามีหน้าที่ glob.glob()พลิกผันการไหลของทางน้ำ ตัวอย่างแรกมีรูปแบบสั้น เช่น “examples\feed.xml” และอีกตัวอย่างมีรูปแบบสั้น เช่น “romantest1.py”.
ในขณะที่คุณขาดการเร่งปฏิกิริยาในสายการผลิต แต่สำหรับสิ่งนี้
รวมสองฟังก์ชันสำหรับการทำงานกับไดเร็กทอรีการทำงานที่แน่นอน
เส้นทาง vydnosny
คุณสามารถยกเลิกการคลิกไฟล์หรือลบข้อมูลเมตาได้
หากคุณต้องการลบเส้นทางสัมบูรณ์ - เส้นทางที่มีชื่อไดเร็กทอรีทั้งหมดจนถึงรากหรืออักษรระบุไดรฟ์ - คุณจะต้องใช้ฟังก์ชันนี้
os.path.realpath()
>>> นำเข้าระบบปฏิบัติการ
c:\Users\pilgrim\diveintopython3\examples
>>> พิมพ์ (os .path .realpath ("feed.xml" ) ) |
|
เครื่องกำเนิดรายการ |
|
ในตัวสร้างรายการ คุณสามารถใช้ภาษา Python ใดก็ได้ |
ด้วยความช่วยเหลือของตัวสร้างรายการ คุณสามารถแสดงรายการหนึ่งก่อนหน้ารายการอื่นได้อย่างง่ายดายโดยย่อฟังก์ชันลงไปที่องค์ประกอบสกิน ภาษาเก่า>>> a_list = [ 1 , 9 , 8 , 4 ]
>>> [ elem * 2 สำหรับองค์ประกอบใน a_list] |
|
ในรายการตัวสร้าง คุณสามารถปรับแต่งนิพจน์ Python ใดๆ ได้ รวมถึงฟังก์ชันโมดูลด้วย |
[ "feed-broken.xml" , "feed-ns0.xml" , "feed.xml" ]
>>> [ os .path .realpath (f) สำหรับ f ใน glob .glob ("*.xml" ) ] |
|
["ค:, |
"ค:]
>>> [ os .path .realpath (f) สำหรับ f ใน glob .glob ("*.xml" ) ] |
|
>>> [ (os .stat (f) .st_size , os .path .realpath (f) ) สำหรับ f ใน glob .glob ("*.xml" ) ] |
|
>>> [ (humansize.approximate_size (os .stat (f) .st_size ) , f) สำหรับ f ใน glob .glob ("*.xml" ) |
เครื่องกำเนิดคำศัพท์
ตัวสร้างพจนานุกรมจะสร้างตัวสร้างรายการ และสร้างพจนานุกรมแทนรายการ
>>> [ os .path .realpath (f) สำหรับ f ใน glob .glob ("*.xml" ) ] |
|
>>> ข้อมูลเมตา = [ (f, os .stat (f) ) สำหรับ f ใน glob .glob ("*test*.py" ) ] |
|
>>> ข้อมูลเมตา[ 0 ] |
|
>>> metadata_dict = ( f:os .stat (f) สำหรับ f ใน glob .glob ("*test*.py" ) ) |
|
>>> ประเภท (metadata_dict) |
|
>>> รายการ (metadata_dict.keys()) |
|
>>> metadata_dict["alphameticstest.py"] .st_size |
เช่นเดียวกับในตัวสร้างรายการ คุณสามารถรวมความคิดไว้ในตัวสร้างพจนานุกรมได้ ถ้าเพื่อกรองลำดับอินพุตสำหรับการประมวลผลเพิ่มเติม ซึ่งคำนวณสำหรับองค์ประกอบสกิน
>>> นำเข้าระบบปฏิบัติการ , glob , ขนาดมนุษย์ |
คุณรู้ความแตกต่างระหว่างไวยากรณ์ต่อไปนี้หรือไม่?
(x สำหรับ x อยู่ในช่วง (5))
สิ่งอันดับ (ช่วง (5))
มาตรวจสอบกัน
4 ข้อเท็จจริงเกี่ยวกับรายการ
ขั้นแรก วอดกุกสั้น ๆ บนแผ่นงาน (อาร์เรย์ในภาษาอื่น)
- list คือประเภทของข้อมูลที่สามารถแสดงเป็นกลุ่มขององค์ประกอบได้
- รายการง่ายๆ มีลักษณะดังนี้ –
- >>> a = 12 >>> b = "นี่คือข้อความ" >>> my_list = , (1, 2, 3), a] >>> print(my_list) , (1, 2, 3), 12]
- คุณสามารถปฏิเสธการเข้าถึงองค์ประกอบเดียวหรือกลุ่มองค์ประกอบใด ๆ โดยใช้ไวยากรณ์:
& >>> a = ["สีแดง", "สีเขียว", "สีน้ำเงิน"] >>> พิมพ์(a) สีแดง
เนื่องจากมันไม่ง่ายเหมือนการเขียนโปรแกรมฟังก์ชันใน Python ดังนั้น list comprehension จึงช่วยให้คุณสร้างรายการที่มี for loop โดยใช้โค้ดน้อยกว่าได้
ลองดูตัวอย่างต่อไปนี้
คุณสร้างรายการโดยใช้ for loop และ a พิสัย()การทำงาน.
& >>> my_list = >>> สำหรับ x อยู่ในช่วง (10): ... my_list.append(x * 2) ... >>> พิมพ์(my_list)
และนี่คือวิธีการดำเนินการตามตัวอย่างก่อนหน้านี้โดยใช้รายการความเข้าใจ:
>>> comp_list = >>> พิมพ์ (comp_list)
ชี้ด้านล่างแต่อยู่เบื้องหลังถ้อยคำเพื่อคิดเกี่ยวกับไวยากรณ์ ผลลัพธ์เดียวกันอาจทำได้เพียงแค่ใช้รายการ (ช่วง (0, 19, 2))
>>> comp_list = >>> พิมพ์ (comp_list)
การทำงาน. อย่างไรก็ตาม คุณสามารถเลือกการเปลี่ยนแปลงแบบพับได้เพิ่มเติมในส่วนแรกของการคำนวณ หรือซูมเข้าเพื่อกรองแผ่นงาน
บางสิ่งเช่นนี้:
ตัวเลือกที่ชัดเจนอื่นๆ พร้อมใช้งานสำหรับความเข้าใจรายการเพื่อรวมหลายรายการและสร้างรายการ
พูดตามตรง ไวยากรณ์ดูเหมือนจะซับซ้อน
วิธีนี้สามารถช่วยให้คุณคิดถึงลำดับภายนอกและภายในได้
นี่หมายถึงพลังของความเข้าใจรายการ หากคุณสร้างรายการเพื่อรวม 2 รายการที่มีอยู่
>>> nums = >>> ตัวอักษร = ["A", "B", "C", "D", "E"] >>> nums_letters = [ สำหรับ n ใน nums สำหรับ l ในตัวอักษร] #รายการความเข้าใจ รวมสองรายการง่ายๆ ให้เป็นรายการที่ซับซ้อน
>>> iter_string = "ข้อความบางส่วน" >>> comp_list = >>> พิมพ์(comp_list) ["s", "o", "m", "e", "t", "e", "x", "ที"]
ความเข้าใจไม่ได้จำกัดอยู่เพียงรายการ
คุณสามารถสร้างคำสั่งและกำหนดความเข้าใจได้เช่นกัน
>>> dict_comp = (x:chr(65+x) สำหรับ x อยู่ในช่วง (1, 11)) >>> type(dict_comp) >>> พิมพ์(dict_comp) (1: "B", 2: "C", 3: "D", 4: "E", 5: "F", 6: "G", 7: "H", 8: "I", 9: "J", 10: "K") >>> set_comp = (x** 3 สำหรับ x อยู่ในช่วง (10) ถ้า x % 2 == 0)>>> พิมพ์(set_comp) (0, 8, 64, 512, 216) ความแตกต่างระหว่าง Iterable และ Iteratorคุณจะคุ้นเคยกับแนวคิดของตัวสร้างเมื่อคุณนึกถึงตัววนซ้ำและตัววนซ้ำ
>>> hasattr(str, "__iter__") จริง >>> hasattr(bool, "__iter__") เท็จ
โปรโตคอลตัววนซ้ำจะถูกนำไปใช้เมื่อใดก็ตามที่คุณวนซ้ำลำดับข้อมูล
- สำหรับก้น หากคุณเป็นนักวิโคริสต์สำหรับทางออก สิ่งที่มองเห็นได้ กระแทกไปที่พื้นหลัง: >>> พิมพ์(dict_comp) (1: "B", 2: "C", 3: "D", 4: "E", 5: "F", 6: "G", 7: "H", 8: "I", 9: "J", 10: "K") >>> set_comp = (x** 3 สำหรับ x อยู่ในช่วง (10) ถ้า x % 2 == 0)อันดับแรก
- () วิธีการถูกเรียกบนวัตถุเพื่อแปลงเป็นวัตถุตัววนซ้ำต่อไป
- () วิธีการนี้เรียกว่าวัตถุตัววนซ้ำเพื่อรับองค์ประกอบถัดไปของลำดับหยุดทำซ้ำ
หยุดทำซ้ำ
ตัวสร้างนิพจน์
ใน Python ตัวสร้างจะให้วิธีที่สะดวกในการใช้โปรโตคอลตัววนซ้ำ
ตัวสร้างเป็นตัวสร้างแบบวนซ้ำได้โดยใช้ฟังก์ชันพร้อมคำสั่ง ayield
เหตุผลหลักสำหรับเครื่องกำเนิดคือการประเมินองค์ประกอบเพื่อการใช้งาน
อย่างที่คุณพูด ฟังก์ชันคำสั่ง return ปกติ ฟังก์ชันจะถูกยกเลิกเมื่อใดก็ตามที่พบคำสั่ง return
สำหรับฟังก์ชันที่มีอนุประโยคเพิ่มเติม ฟังก์ชันฟังก์ชันจะ "เกี่ยวข้อง" กับการเรียกที่เหลือและสามารถรับได้ในครั้งถัดไปที่คุณเรียกใช้ฟังก์ชันตัวสร้าง
>>> def my_gen(): ... สำหรับ x อยู่ในช่วง (5): ... ให้ผลตอบแทน x
อย่างไรก็ตาม มันไม่ได้แชร์พลังทั้งหมดของเครื่องกำเนิดการสร้างสรรค์กับฟังก์ชันผลผลิต ไวยากรณ์และแนวคิดคล้ายกับรายการความเข้าใจ:>>> gen_exp = (x ** 2 สำหรับ x อยู่ในช่วง (10) ถ้า x % 2 == 0) >>> สำหรับ x ใน gen_exp: ... พิมพ์ (x) 0 4 16 36 64
สำหรับเงื่อนไขทางไวยากรณ์ เฉพาะความแตกต่างเท่านั้นที่คุณใช้วงเล็บแทนวงเล็บเหลี่ยม พิสัย()หากคุณต้องการทราบว่าคุณต้องการข้อมูลประเภทใด คุณสามารถใช้รายการความเข้าใจและนิพจน์ตัวสร้างที่แตกต่างกันได้ พิสัย()>>> list_comp = >>> gen_exp = (x ** 2 สำหรับ x อยู่ในช่วง (10) ถ้า x % 2 == 0) >>> พิมพ์ (list_comp) >>> พิมพ์ (gen_exp)
ที่ 0x7f600131c410>
เราเห็นความแตกต่างนี้ได้เนื่องจากในขณะที่ `list` สร้าง Python จะสงวนหน่วยความจำสำหรับรายการทั้งหมดและคำนวณทันที
สำหรับตัวเลือกตัวสร้าง เราเพียงแค่ลบ “อัลกอริทึม”/ “คำแนะนำ” วิธีการคำนวณที่เก็บ Python นั้นออก
และเมื่อใดก็ได้จะมีการเรียกเครื่องกำเนิดไฟฟ้าซึ่งจะ "สร้าง" องค์ประกอบถัดไปของลำดับตามความต้องการตาม "คำแนะนำ" เท่านั้น
ในทางกลับกัน ตัวสร้างจะใช้งานง่าย เนื่องจากในระหว่างชั่วโมงที่องค์ประกอบของส่วนคือการแทรกและการเพิ่มเติม ฟังก์ชันบริบท/สถานะจะถูกเปิดใช้งานก่อนที่จะกดชั่วโมงปัจจุบันเพื่อสร้างค่าปัจจุบัน