คำถามติดแท็ก generator

เครื่องกำเนิดไฟฟ้าเป็นลักษณะทั่วไปของรูทีนย่อยซึ่งส่วนใหญ่ใช้เพื่อลดความซับซ้อนในการเขียนตัววนซ้ำ คำสั่งผลตอบแทนในเครื่องกำเนิดไฟฟ้าไม่ได้ระบุโครูทีนที่จะข้ามไป แต่จะส่งผ่านค่ากลับไปที่รูทีนพาเรนต์


10
เครื่องมือใด ๆ ในการสร้างสกีมา XSD จากเอกสารอินสแตนซ์ XML [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังมองหาเครื่องมือที่จะใช้เอกสารอินสแตนซ์ XML และแสดงผลลัพธ์ XSD ที่สอดคล้องกัน แน่นอนฉันรู้ว่า XSD schema ที่สร้างขึ้นจะถูก จำกัด เมื่อเปรียบเทียบกับการสร้าง schema ด้วยมือ (อาจจะไม่จัดการองค์ประกอบเสริมหรือทำซ้ำหรือข้อ จำกัด ของข้อมูล) แต่อย่างน้อยก็อาจเป็นจุดเริ่มต้นอย่างรวดเร็ว
146 xml  xsd  schema  generator 



7
มีนิพจน์สำหรับเครื่องกำเนิดไฟฟ้าที่ไม่สิ้นสุดหรือไม่?
มีนิพจน์เครื่องกำเนิดไฟฟ้าแบบตรงไปตรงมาที่สามารถให้องค์ประกอบที่ไม่มีที่สิ้นสุดหรือไม่? นี่เป็นคำถามเชิงทฤษฎีล้วนๆ ไม่จำเป็นต้องมีคำตอบที่ "ใช้ได้จริง" ที่นี่ :) ตัวอย่างเช่นการสร้างเครื่องกำเนิดไฟฟ้าที่ จำกัด เป็นเรื่องง่าย: my_gen = (0 for i in xrange(42)) อย่างไรก็ตามในการสร้างสิ่งที่ไม่มีที่สิ้นสุดฉันต้อง "สร้างมลพิษ" เนมสเปซของฉันด้วยฟังก์ชันปลอม: def _my_gen(): while True: yield 0 my_gen = _my_gen() การทำสิ่งต่างๆในไฟล์แยกกันและการทำในimportภายหลังจะไม่นับรวม ฉันยังรู้ว่าitertools.repeatมันทำอย่างนี้ ฉันอยากรู้ว่ามีวิธีแก้ปัญหาแบบซับเดียวหรือไม่

12
C ++ เทียบเท่ากับรูปแบบตัวสร้าง Python
ฉันมีตัวอย่างโค้ด Python ที่ต้องเลียนแบบใน C ++ ฉันไม่ต้องการโซลูชันที่เฉพาะเจาะจงใด ๆ (เช่นโซลูชันผลตอบแทนตามกิจวัตรร่วมแม้ว่าจะเป็นคำตอบที่ยอมรับได้เช่นกัน) แต่ฉันต้องสร้างความหมายในบางลักษณะ หลาม นี่คือตัวสร้างลำดับขั้นพื้นฐานซึ่งมีขนาดใหญ่เกินไปที่จะจัดเก็บเวอร์ชันที่เป็นรูปธรรมอย่างชัดเจน def pair_sequence(): for i in range(2**32): for j in range(2**32): yield (i, j) เป้าหมายคือการรักษาสองอินสแตนซ์ของลำดับข้างต้นและวนซ้ำในช่วงกึ่งล็อค แต่เป็นชิ้น ๆ ในตัวอย่างด้านล่างfirst_passใช้ลำดับของคู่เพื่อเริ่มต้นบัฟเฟอร์และsecond_passสร้างลำดับที่แน่นอนเหมือนกันและประมวลผลบัฟเฟอร์อีกครั้ง def run(): seq1 = pair_sequence() seq2 = pair_sequence() buffer = [0] * 1000 first_pass(seq1, buffer) second_pass(seq2, buffer) ... repeat ... C ++ …


6
จะรับทีละค่าจากฟังก์ชันเครื่องกำเนิดไฟฟ้าใน Python ได้อย่างไร?
คำถามพื้นฐานมาก - จะรับค่าหนึ่งจากเครื่องกำเนิดไฟฟ้าใน Python ได้อย่างไร จนถึงตอนนี้ฉันพบว่าฉันสามารถเขียนgen.next()ได้ ฉันแค่อยากแน่ใจว่านี่เป็นวิธีที่ถูกต้องหรือไม่?
113 python  generator 

9
ฟังก์ชัน Python Empty Generator
ใน python เราสามารถกำหนดฟังก์ชันตัววนซ้ำได้อย่างง่ายดายโดยใส่คำสำคัญที่ให้ผลตอบแทนในเนื้อความของฟังก์ชันเช่น: def gen(): for i in range(100): yield i ฉันจะกำหนดฟังก์ชันเครื่องกำเนิดไฟฟ้าที่ไม่ให้ค่า (สร้างค่า 0) ได้อย่างไรรหัสต่อไปนี้ใช้ไม่ได้เนื่องจาก python ไม่สามารถรู้ได้ว่าควรเป็นเครื่องกำเนิดไฟฟ้าและไม่ใช่ฟังก์ชันปกติ: def empty(): pass ฉันสามารถทำสิ่งที่ชอบ def empty(): if False: yield None แต่นั่นจะน่าเกลียดมาก มีวิธีใดที่ดีในการใช้ฟังก์ชันตัววนซ้ำที่ว่างเปล่า
108 python  generator 

3
Python: ใช้อัลกอริทึมแบบเรียกซ้ำเป็นตัวสร้าง
เมื่อเร็ว ๆ นี้ฉันได้เขียนฟังก์ชันเพื่อสร้างลำดับบางอย่างโดยมีข้อ จำกัด ที่ไม่สำคัญ ปัญหามาพร้อมกับวิธีแก้ซ้ำตามธรรมชาติ ตอนนี้มันเกิดขึ้นว่าแม้จะมีอินพุตที่ค่อนข้างเล็ก แต่ลำดับก็มีหลายพันดังนั้นฉันจึงต้องการใช้อัลกอริทึมของฉันเป็นตัวสร้างแทนที่จะใช้มันเพื่อเติมเต็มรายการด้วยลำดับทั้งหมด นี่คือตัวอย่าง สมมติว่าเราต้องการคำนวณการเรียงสับเปลี่ยนทั้งหมดของสตริงด้วยฟังก์ชันวนซ้ำ อัลกอริทึมไร้เดียงสาต่อไปนี้ใช้อาร์กิวเมนต์พิเศษ 'ที่เก็บข้อมูล' และต่อท้ายการเปลี่ยนแปลงเมื่อใดก็ตามที่พบ: def getPermutations(string, storage, prefix=""): if len(string) == 1: storage.append(prefix + string) # <----- else: for i in range(len(string)): getPermutations(string[:i]+string[i+1:], storage, prefix+string[i]) storage = [] getPermutations("abcd", storage) for permutation in storage: print permutation (โปรดอย่าสนใจเกี่ยวกับความไม่มีประสิทธิภาพนี่เป็นเพียงตัวอย่างเท่านั้น) ตอนนี้ฉันต้องการเปลี่ยนฟังก์ชั่นของฉันให้เป็นเครื่องกำเนิดไฟฟ้ากล่าวคือให้การเปลี่ยนแปลงแทนที่จะผนวกเข้ากับรายการพื้นที่เก็บข้อมูล: def getPermutations(string, prefix=""): …

8
Python: การแสดงออกของเครื่องกำเนิดเทียบกับอัตราผลตอบแทน
ใน Python มีความแตกต่างระหว่างการสร้างวัตถุเครื่องกำเนิดไฟฟ้าผ่านนิพจน์ตัวสร้างกับการใช้คำสั่งผลตอบแทนหรือไม่ ใช้ผลผลิต : def Generator(x, y): for i in xrange(x): for j in xrange(y): yield(i, j) การใช้นิพจน์เครื่องกำเนิดไฟฟ้า : def Generator(x, y): return ((i, j) for i in xrange(x) for j in xrange(y)) ฟังก์ชันทั้งสองจะส่งคืนอ็อบเจ็กต์ตัวสร้างซึ่งสร้างทูเปิลเช่น (0,0), (0,1) เป็นต้น ข้อดีของข้อใดข้อหนึ่ง? ความคิด? ขอบคุณทุกๆคน! มีข้อมูลดีๆมากมายและข้อมูลอ้างอิงเพิ่มเติมในคำตอบเหล่านี้!

4
ระบุ () - สร้างเครื่องกำเนิดไฟฟ้าใน Python
ฉันต้องการทราบว่าจะเกิดอะไรขึ้นเมื่อฉันส่งผลลัพธ์ของฟังก์ชันเครื่องกำเนิดไฟฟ้าไปยัง python's enumerate () ตัวอย่าง: def veryBigHello(): i = 0 while i < 10000000: i += 1 yield "hello" numbered = enumerate(veryBigHello()) for i, word in numbered: print i, word การแจงนับวนซ้ำอย่างเฉื่อยชาหรือไม่ก็ทำให้ทุกอย่างกลายเป็นเรื่องแรก? ฉัน 99.999% แน่ใจว่ามันขี้เกียจดังนั้นฉันจะปฏิบัติเหมือนกับฟังก์ชั่นเครื่องกำเนิดไฟฟ้าได้หรือไม่หรือฉันต้องระวังอะไร

17
วิธีแบ่งส่วนที่ทำซ้ำได้ในขนาดคงที่
เป็นไปได้ที่ซ้ำกัน: คุณแบ่งรายการออกเป็นชิ้นขนาดเท่า ๆ กันใน Python ได้อย่างไร? ฉันประหลาดใจที่ไม่พบฟังก์ชัน "แบตช์" ที่จะใช้เป็นอินพุตที่สามารถทำซ้ำได้ ตัวอย่างเช่น: for i in batch(range(0,10), 1): print i [0] [1] ... [9] หรือ: for i in batch(range(0,10), 3): print i [0,1,2] [3,4,5] [6,7,8] [9] ตอนนี้ฉันเขียนสิ่งที่ฉันคิดว่าเป็นเครื่องกำเนิดไฟฟ้าที่ค่อนข้างง่าย: def batch(iterable, n = 1): current_batch = [] for item in iterable: current_batch.append(item) if len(current_batch) == …

6
ไวยากรณ์ที่จะข้ามการสร้างการทดสอบเนื้อหาและตัวช่วยสำหรับ "รางสร้างตัวควบคุม"?
ฉันอ่านวิธีใช้และลองใช้คำสั่งต่อไปนี้เพื่อข้ามการสร้างการทดสอบเนื้อหาและไฟล์ตัวช่วย $ bin/rails generate controller home index --helper false --assets false --controller-specs false --view-specs false create- app/controllers/home_controller.rb route get "home/index" invoke erb create app/views/home create app/views/home/index.html.erb invoke rspec error false [not found] error false [not found] ดังที่คุณอาจสังเกตเห็นจากผลลัพธ์ด้านบนนี้ใช้งานได้ & เท่านั้นcontroller, routes& viewsถูกสร้างขึ้น แต่สองบรรทัดสุดท้ายน่าสนใจ: error false [not found] error false [not found] …

7
เครื่องกำเนิด Python แบบซิปที่มีตัวที่ 2 จะสั้นกว่า: วิธีดึงองค์ประกอบที่ใช้ไปอย่างเงียบ ๆ
ฉันต้องการแยก 2 กำเนิดของความยาว (อาจ) แตกต่างกันด้วยzip: for el1, el2 in zip(gen1, gen2): print(el1, el2) อย่างไรก็ตามหากgen2มีองค์ประกอบน้อยกว่าหนึ่งองค์ประกอบพิเศษของgen1คือ "บริโภค" ตัวอย่างเช่น, def my_gen(n:int): for i in range(n): yield i gen1 = my_gen(10) gen2 = my_gen(8) list(zip(gen1, gen2)) # Last tuple is (7, 7) print(next(gen1)) # printed value is "9" => 8 is missing gen1 = …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.