mutator (जैसे सूचियों का .reverse
पद्धति के रूप में) पायथन के परिवर्तनशील कंटेनरों के तरीकों लगभग हमेशा लौट None
- कुछ वापसी एक उपयोगी मान, उदा .pop
विधि पॉप किए गए तत्व को लौटाती है, लेकिन बनाए रखने की मुख्य अवधारणा यह है कि उनमें से कोई भी उत्परिवर्तक उत्परिवर्तित कंटेनर वापस नहीं देता है: बल्कि कंटेनर जगह पर परिवर्तित करता है और म्यूटेटर विधि का वापसी मान कंटेनर नहीं है। (यह CQS डिज़ाइन के सिद्धांत का एक अनुप्रयोग है - जैसा कि कहते हैं, एफ़िल में, बर्ट्रेंड मेयर द्वारा बनाई गई भाषा, जिसने सीक्यूएस का आविष्कार किया है, लेकिन ऐसा इसलिए है क्योंकि पाइथन में "व्यावहारिकता शुद्धता को धड़कता है, सीएफआर import this
; । -)
एक सूची का निर्माण अक्सर बस घने मामले ऐसे सभी आप क्या करना चाहते परिणाम पर पाश है के लिए, पुनरावर्तक के निर्माण की तुलना में महंगे है, इसलिए बनाया-इन जैसे reversed
(और सभी itertools
मॉड्यूल में अद्भुत बिल्डिंग ब्लॉक) रीटर इटरेटर्स, सूचियां नहीं।
लेकिन यदि आपके पास n iterator x
लेकिन वास्तव में वास्तव में समतुल्य सूचीy
की आवश्यकता है? केक का टुकड़ा - बस y = list(x)
करें। list
टाइप करने का एक नया उदाहरण बनाने के लिए, आप कॉल टाइप list
टाइप करें - यह एक सामान्य पायथन विचार है कि पहले दो अनुच्छेदों में मैंने उल्लेख की गई महत्वपूर्ण चीज़ों की तुलना में बनाए रखने के लिए और भी महत्वपूर्ण है!-)
तो, अपने विशिष्ट समस्या के लिए कोड वास्तव में बहुत एक साथ पिछले पैराग्राफ में महत्वपूर्ण विचार के आधार पर डाल करने के लिए आसान है:
[list(reversed(row)) for row in figure]
ध्यान दें कि मैं एक सूची समझ का उपयोग कर रहा हूँ, नहींmap
: एक सामान्य नियम के रूप में, map
केवल जब वहाँ कोई एक lambda
इसे बनाने के लिए (अगर एक lambda
बाद हमेशा की तरह साफ होने के रूप में एक listcomp शामिल है, साथ ही साथ के लिए की जरूरत एक आखिरी अनुकूलन के रूप में इस्तेमाल किया जाना चाहिए , वैसे भी तेज़ हो जाता है! -)।
एक बार जब आप एक "अजगर के पिछले मास्टर" कर रहे हैं, यदि आपका रूपरेखा आपको बताता है कि इस कोड को एक टोंटी है, तो आप इस तरह के
[row[::-1] for row in figure]
एक नकारात्मक कदम टुकड़ा करने की क्रिया लागू करने के रूप विकल्प की कोशिश करने का पता कर सकते हैं (उर्फ "मार्टियन स्माइली") पंक्तियों की उलटी प्रतियां बनाने के लिए, यह जानते हुए कि यह list(reversed(row))
दृष्टिकोण से आमतौर पर तेज़ है। लेकिन - जब तक आपका कोड केवल आपके द्वारा या किसी व्यक्ति द्वारा पाइथन में कम से कम कुशलता से बनाए रखने के लिए नहीं है - यह सबसे सरल "पहले सिद्धांतों से कोड" दृष्टिकोण का उपयोग करने के लिए एक रक्षात्मक स्थिति है, सिवाय इसके कि प्रोफाइलिंग आपको पेडल पर धक्का देने के लिए कहती है । (व्यक्तिगत रूप से मुझे लगता है कि "मार्टियन स्माइली" इस विशिष्ट सामान्य मामले के लिए इस सामान्य सामान्य दर्शन को लागू करने से बचने के लिए पर्याप्त महत्वपूर्ण है, लेकिन, हे, उचित लोग इस विशिष्ट बिंदु पर भिन्न हो सकते हैं! -)।
व्यक्तिगत पूर्वाग्रह पर काबू पाने के लिए +1 :: - 1 – intuited
+1 "मार्टियन स्माइली" के लिए +1 –