idioms - Idiomatic Python has_one -


मैं सिर्फ एक बेवकूफ छोटी सहायक फ़ंक्शन का आविष्कार किया है:

  def has_one (seq, predicate = Bool): "" "क्या" क्या एक वस्तु है जो कि `सीक` में एक वस्तु है, जो कम से कम मूल्यांकन (शॉर्ट-सर्किट) के साथ` प्रेशर` से मेल खाता है। "" "इटरेटर = ) कोशिश: StopIteration के अलावा iterator.next (): # कोई वस्तु मेलजोल से मेल नहीं खाता। वापसी गलत प्रयास करें: StopEteration के अलावा iterator.next (): # सटीक एक वस्तु मेल खाता है। वापसी True return False # एक से अधिक आइटम विधेय से मेल खाता है  

क्योंकि सबसे अधिक पठनीय / मुहावरे वाली इनलाइन चीज के साथ मैं आ सकता था:

  [वस्तु के लिए वस्तु (आइटम) seq में)। Count (true ) == 1  

... जो मेरे मामले में ठीक है क्योंकि मुझे पता है कि सीईसी छोटा है, लेकिन यह अजीब लगता है। क्या कोई मुहावरा है जो मैं यहाँ भूल रहा हूं जो मुझे इस सहायक को तोड़ने से रोकता है?

स्पष्टीकरण

इसे वापस देखकर, यह दयालु था एक क्रांति से पूछे जाने वाले सवाल का, हालांकि हमें कुछ उत्कृष्ट जवाब मिल गए! मैं या तो तलाश कर रहा था:

  • एक स्पष्ट और पठनीय इनलाइन मुहावरे या स्टैडीलिब फ़ंक्शन, इस मामले में उत्सुक मूल्यांकन स्वीकार्य है।
  • एक अधिक स्पष्ट और पठनीय सहायक कार्य - चूंकि यह एक संपूर्ण अन्य समारोह को तोड़ना है, केवल न्यूनतम राशि मूल्यांकन स्वीकार्य लगता है।

सहायक फ़ंक्शन के लिए वास्तव में शांत मुहावरे के साथ आया और इसके तहत एक अधिक सरल इनलाइन मुहावरे के साथ आया धारणा है कि विधेयक एक bool देता है आपकी मदद के लिए हर किसी के लिए धन्यवाद!

यह निश्चित नहीं है कि यह आपके द्वारा प्रस्तावित संस्करणों से बेहतर है, हालांकि अगर

  योग (नक्शा (अंक, seq)) == 1  

Pre>

करता है (हालांकि यह दूसरे तत्व पर नहीं रुक जाएगा)


Comments

Popular posts from this blog

asp.net - Javascript/DOM Why is does my form not support submit()? -

sockets - Delphi: TTcpServer, connection reset when reading -

javascript - Classic ASP "ExecuteGlobal" statement acting differently on two servers -