संभव डुप्लिकेट:
Is it Pythonic to use list comprehensions for just side effects?एक शॉर्टकट के रूप में एक समझ का उपयोग करते हुए एक विधि कई बार
कभी कभी एक स्क्रिप्ट फ़ाइल में मैं [foo(x) for x in (1,2,3)]
की तरह कुछ लिखेगा। मैं वास्तव में वापसी मान के बारे में परवाह नहीं है (यदि हो तो), मैं बस आशुलिपि पसंद करते हैं के रूप में
for x in (1,2,3):
foo(x)
लेकिन का उपयोग कर इस समझ में मैं एक सूची वस्तु वहाँ (जो वास्तव में कहीं भी जाने नहीं करता है बनाने के लिए विरोध कर रहा हूँ मैं इसे कचरा एकत्र हो जाता है क्योंकि कोई भी इसे करने के लिए एक संदर्भ रहता है लगता है)
>>> L = list('SxPyAMz')
>>> [L.remove(c) for c in ('x', 'y', 'z')]
[None, None, None]
>>> print L
['S', 'P', 'A', 'M']
मेरा प्रश्न: यह बुरा व्यवहार है, या यह किसी का ध्यान नहीं द्वारा विशेषज्ञ करने के लिए वस्तु के लिए हानिरहित पूरी तरह से है? यदि यह बुरा है, तो इस तरह के शॉर्टकट के लिए एक बेहतर 1-लाइनर है?
मैं इन पसंद नहीं है क्योंकि न्यू लाइन की कमी और एक मांगपत्र अजगर शैली गाइड के खिलाफ है। – wim
आईएमएचओ पायथन नियंत्रण संरचनाओं का एक-लाइनर संस्करण उन स्थानों पर स्वीकार्य है जहां आप सूची समझ का उपयोग करना चाहते हैं। आपके उदाहरण में एक अपरकेस वेरिएबल नाम है जो (फिर से, आईएमएचओ) पीईपी 8 का सबसे बुरा उल्लंघन है, क्योंकि कैमेलकेस को कक्षा के नामों और instances_should_use_underscores के लिए आरक्षित किया जाना चाहिए। मुझे पता है कि किसी भी विकल्प से पढ़ने के लिए आसान और आसान है। –
हाँ, लेकिन यह सिर्फ दुभाषिया पर प्रदर्शन के लिए था। आप उत्पादन कोड में एल नामक एक सूची का उपयोग करके मुझे नहीं देख पाएंगे। – wim