मैं के रूप मेंका उपयोग करते हुए भाव
list(i for i in range(100) if i*i < 30)
सूची comprehensions/जनरेटर भाव में if
और for
उपयोग कर सकते हैं मैं जानता हूँ कि यह सबसे कारगर नहीं है, लेकिन मेरे साथ सहन के रूप में हालत भी बहुत कुछ हो सकता है जटिल और यह सिर्फ एक उदाहरण है। हालांकि, यह अभी भी सौ पुनरावृत्तियों के माध्यम से चला जाता है और केवल पहले 6. में एक मूल्य पैदावार वहाँ एक रास्ता है, जहां कुछ इस तरह से बंद करने के लिए जनरेटर अभिव्यक्ति बताने के लिए है:
list(i for i in range(100) while i*i < 30)
हालांकि, while
जनरेटर में समझ नहीं है भाव। तो, मेरा सवाल यह है कि, मैं एक स्टॉपिंग स्थिति के साथ जनरेटर अभिव्यक्ति कैसे लिखूं ताकि यह गणना जारी न रखे, भले ही यह नए मान न उत्पन्न करे।
बस एक नोट: आप '[i for i in range (100)] ' – Joril
का उपयोग कर सीधे एक सूची उत्पन्न कर सकते हैं उत्सुकता से, [PEP3142] (https://www.python.org/dev/peps/ पेप -3142 /) इस सवाल से पूछा गया था। दिए गए उपयोग मामले लगभग एक ही है। Guido ने मई, 2013 में –