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

การทำซ้ำได้คือออบเจ็กต์เช่นสตริงหรือคอลเลกชันที่สามารถทำซ้ำได้โดยให้สมาชิกทีละคน

30
ทำความเข้าใจสัญกรณ์ชิ้น
ฉันต้องการคำอธิบายที่ดี (มีการอ้างอิงเป็นบวก) ในสัญกรณ์ชิ้นของ Python สำหรับฉันแล้วสัญกรณ์นี้ต้องมีการหยิบขึ้นมาบ้าง มันดูมีพลังมาก แต่ฉันก็ไม่ได้เอาหัวไปรอบ ๆ
3282 python  list  slice  iterable 

21
ใน Python ฉันจะทราบได้อย่างไรว่าวัตถุนั้นสามารถทำซ้ำได้?
มีวิธีการisiterableอย่างไร ทางออกเดียวที่ฉันได้พบคือการโทร hasattr(myObj, '__iter__') แต่ฉันไม่แน่ใจว่านี่เป็นวิธีพิสูจน์คนโง่ได้อย่างไร
1083 python  iterable 

12
iterator, iterable และ iteration คืออะไรกันแน่?
คำจำกัดความพื้นฐานที่สุดของ "iterable", "iterator" และ "iteration" ใน Python คืออะไร? ฉันได้อ่านคำจำกัดความหลายคำ แต่ฉันไม่สามารถระบุความหมายที่แน่นอนได้เนื่องจากมันยังไม่จม ใครสามารถช่วยฉันด้วยคำจำกัดความ 3 คำในคนธรรมดา?

9
แปลง Iterable เป็น Stream โดยใช้ Java 8 JDK
java.lang.Iterable<T>ฉันมีอินเตอร์เฟซที่ส่งกลับ ฉันต้องการจัดการผลลัพธ์นั้นโดยใช้ Java 8 Stream API อย่างไรก็ตาม Iterable ไม่สามารถ "สตรีม" ได้ แนวคิดใดที่จะใช้ Iterable เป็นสตรีมโดยไม่ต้องแปลงเป็น List?

12
Java: รับไอเท็มแรกจากคอลเล็กชัน
หากฉันมีคอลเล็กชันเช่นCollection<String> strsฉันจะนำไอเท็มแรกออกมาได้อย่างไร ฉันสามารถเรียกIteratorใช้ครั้งแรกnext()แล้วโยนIteratorออกไป มีวิธีที่สิ้นเปลืองน้อยลงหรือไม่?

9
เหตุใดสตรีม <T> จึงไม่ใช้ Iterable <T>
ใน Java 8 เรามีคลาส Stream &lt;T&gt;ซึ่งมีวิธีการอยากรู้อยากเห็น Iterator&lt;T&gt; iterator() ดังนั้นคุณคาดหวังว่าจะใช้อินเตอร์เฟสIterable &lt;T&gt;ซึ่งต้องการวิธีการนี้อย่างแน่นอน แต่นั่นไม่ใช่กรณี เมื่อฉันต้องการวนซ้ำสตรีมโดยใช้ลูป foreach ฉันต้องทำอะไรเช่นนี้ public static Iterable&lt;T&gt; getIterable(Stream&lt;T&gt; s) { return new Iterable&lt;T&gt; { @Override public Iterator&lt;T&gt; iterator() { return s.iterator(); } }; } for (T element : getIterable(s)) { ... } ฉันทำอะไรบางอย่างหายไปหรือเปล่า

3
ทำไม Iterable <T> ไม่ได้ให้วิธีการสตรีม () และ parallelStream ()
ฉันสงสัยว่าทำไมIterableอินเทอร์เฟซไม่ได้ให้stream()และparallelStream()วิธีการ พิจารณาคลาสต่อไปนี้: public class Hand implements Iterable&lt;Card&gt; { private final List&lt;Card&gt; list = new ArrayList&lt;&gt;(); private final int capacity; //... @Override public Iterator&lt;Card&gt; iterator() { return list.iterator(); } } มันคือการนำมือมาใช้เพราะคุณสามารถมีไพ่ในมือขณะเล่นเกมการ์ดซื้อขาย โดยพื้นฐานแล้วมันจะห่อหุ้มList&lt;Card&gt;ให้แน่ใจว่ามีความจุสูงสุดและมีคุณสมบัติที่มีประโยชน์อื่น ๆ List&lt;Card&gt;มันจะดีกว่าขณะที่การดำเนินการนั้นโดยตรงเป็น ตอนนี้เพื่อความมั่นใจฉันคิดว่ามันจะเป็นการดีถ้าจะนำไปใช้Iterable&lt;Card&gt;เช่นคุณสามารถใช้ลูปเสริมสำหรับลูปถ้าคุณต้องการวนซ้ำ ( Handชั้นเรียนของฉันมีget(int index)วิธีการด้วยเหตุนี้สิ่งนี้จึงIterable&lt;Card&gt;เป็นเหตุผลในความคิดของฉัน) Iterableอินเตอร์เฟซให้ดังต่อไปนี้ (ซ้ายออก Javadoc): public interface Iterable&lt;T&gt; { Iterator&lt;T&gt; iterator(); default void forEach(Consumer&lt;? super …


16
เหตุใด Iterator ของ Java จึงไม่ใช่ Iterable
ทำไมIteratorอินเตอร์เฟซที่ไม่ขยายIterable? วิธีการก็จะกลับมาiterator()this มันเป็นไปตามวัตถุประสงค์หรือเป็นเพียงการกำกับดูแลของนักออกแบบของ Java หรือไม่? มันจะสะดวกที่จะใช้ลูปสำหรับแต่ละลูปกับตัววนซ้ำเช่นนี้: for(Object o : someContainer.listSomeObjects()) { .... } โดยที่listSomeObjects()ส่งคืนตัววนซ้ำ
178 java  iterator  iterable 


10
แปลง Java Array เป็น Iterable
ฉันมีอาเรย์ของสิ่งดั้งเดิมเช่นสำหรับ int, int [] foo มันอาจจะเป็นขนาดเล็กหรือไม่ int foo[] = {1,2,3,4,5,6,7,8,9,0}; วิธีที่ดีที่สุดในการสร้างIterable&lt;Integer&gt;จากมันคืออะไร? Iterable&lt;Integer&gt; fooBar = convert(foo); หมายเหตุ: โปรดอย่าตอบโดยใช้ลูป (เว้นแต่คุณจะให้คำอธิบายที่ดีเกี่ยวกับวิธีที่คอมไพเลอร์ทำบางสิ่งที่ฉลาดเกี่ยวกับพวกเขา) ยังทราบด้วยว่า int a[] = {1,2,3}; List&lt;Integer&gt; l = Arrays.asList(a); จะไม่ได้รวบรวม Type mismatch: cannot convert from List&lt;int[]&gt; to List&lt;Integer&gt; ตรวจสอบด้วย เหตุใดอาร์เรย์จึงไม่สามารถกำหนดให้กับ Iterable ได้ ก่อนตอบรับ นอกจากนี้หากคุณใช้ห้องสมุดบางอย่าง (เช่น Guava) โปรดอธิบายว่าทำไมสิ่งนี้ถึงดีที่สุด (เนื่องจากมาจาก Google ไม่ใช่คำตอบที่สมบูรณ์: P) สุดท้ายเนื่องจากดูเหมือนว่าจะมีการบ้านเกี่ยวกับเรื่องนั้นหลีกเลี่ยงการโพสต์รหัสการบ้าน
150 java  arrays  iterable 

6
แปลง ES6 ซ้ำเป็น Array
สมมติว่าคุณมี Javascript ES6 ที่เหมือนอาร์เรย์ซึ่งคุณรู้ล่วงหน้าว่าจะมีความยาว จำกัด วิธีที่ดีที่สุดในการแปลงเป็น Javascript Array คืออะไร? เหตุผลในการทำเช่นนั้นคือไลบรารี js จำนวนมากเช่นขีดล่างและ lodash รองรับเฉพาะ Arrays ดังนั้นหากคุณต้องการใช้ฟังก์ชันใด ๆ บน Iterable ต้องแปลงเป็น Array ก่อน ใน python คุณสามารถใช้ฟังก์ชัน list () ได้ ES6 เทียบเท่าหรือไม่

10
รับขนาดของการทำซ้ำใน Java
ฉันต้องการหาจำนวนองค์ประกอบIterableใน Java ฉันรู้ว่าฉันทำได้: Iterable values = ... it = values.iterator(); while (it.hasNext()) { it.next(); sum++; } ฉันสามารถทำอะไรแบบนี้ได้เพราะฉันไม่ต้องการวัตถุใน Iterable อีกต่อไป: it = values.iterator(); while (it.hasNext()) { it.remove(); sum++; } เกณฑ์มาตรฐานขนาดเล็กไม่ได้แสดงความแตกต่างของประสิทธิภาพมากนักความคิดเห็นหรือแนวคิดอื่น ๆ สำหรับปัญหานี้หรือไม่?
90 java  iterable 

3
Iterable และ Sequence ของ Kotlin มีลักษณะเหมือนกันทุกประการ ทำไมต้องมีสองประเภท?
อินเทอร์เฟซทั้งสองนี้กำหนดวิธีการเดียวเท่านั้น public operator fun iterator(): Iterator&lt;T&gt; เอกสารบอกว่าSequenceตั้งใจจะขี้เกียจ แต่ไม่Iterableขี้เกียจด้วย (เว้นแต่จะได้รับการสนับสนุนจาก a Collection)?

2
ใน JavaScript ES6 ความแตกต่างระหว่างตัววนซ้ำกับตัววนซ้ำคืออะไร
iterable เหมือนกับ iterator หรือแตกต่างกันหรือไม่? ดูเหมือนว่าจากข้อมูลจำเพาะ iterable เป็นวัตถุพูดobjเช่นนั้นobj[Symbol.iterator]หมายถึงฟังก์ชั่นเพื่อที่เมื่อถูกเรียกกลับวัตถุที่มีnextวิธีการที่จะกลับ{value: ___, done: ___}วัตถุ: function foo() { let i = 0; const wah = { next: function() { if (i &lt;= 2) return { value: (1 + 2 * i++), done: false } else return { value: undefined, done: true } } }; return …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.