दिलचस्प पोस्ट
डायजेस्ट प्रमाणीकरण क्या है? TextView / EditText में नल पर एक शब्द चुनें कंसोल विंडो को दृश्य सी ++ में कैसे खोलें? जब मैं बराबर () विधि ओवरराइड करता हूं तो मुझे क्यों हैशोड () ओवरराइड करना चाहिए? कैसे ठीक से उपवर्ग और उपरोक्त __getitem__ और __setitem__ नया किवल्यूपियर <UInt32, UInt32> (आई, जे) .GetHashCode (); डुप्लिकेट का उच्च दर जावा थ्रेड इंटरप्ट () विधि कहां बुला रही है अगर मैं नहीं हूं? जावास्क्रिप्ट में यूआरएल के होस्टनाम भाग को कैसे निकालें छवि का आकार बदलना और गुणवत्ता के नुकसान के बिना जेपीएनएल या जेएलैबल में प्रदर्शित करना Google Chrome में केवल "अमान्य फ़ॉर्म नियंत्रण" NSOperation और NSOperationQueue काम धागा बनाम मुख्य धागा क्या घोषित गुणों के लिए इसी आवृत्ति चर की आवश्यकता होती है? मर्ज सॉर्ट एल्गोरिथ्म का उपयोग करके इन्हें कैसे सॉर्ट करना है? मैं जीसीसी को एक फ़ंक्शन को इनलाइन करने के लिए कैसे बता सकता हूं? PHP पैरामीटर में सख्त मानकों का उल्लंघन क्यों है?

लूप और IF स्टेटमेंट को गठबंधन करने का पायथनिक तरीका

मुझे पता है कि दोनों लूप के लिए कैसे उपयोग करें और अगर अलग लाइनों पर बयान, जैसे:

>>> a = [2,3,4,5,6,7,8,9,0] ... xyz = [0,12,4,6,242,7,9] ... for x in xyz: ... if x in a: ... print(x) 0,4,6,7,9 

और मुझे पता है कि जब ये बयान सरल होते हैं, तो मैं इनके संयोजन में एक सूची समझ का उपयोग कर सकता हूं, जैसे:

 print([x for x in xyz if x in a]) 

लेकिन जो मैं नहीं पा रहा हूं वह कहीं भी एक अच्छा उदाहरण है (प्रतिलिपि बनाने और सीखना) के लिए एक जटिल सेट कमांड का प्रदर्शन (न सिर्फ "प्रिंट एक्स") जो कि लूप के लिए और कुछ अगर बयान के संयोजन के बाद होता है मुझे उम्मीद है कि कुछ ऐसा दिखता है:

 for x in xyz if x not in a: print(x...) 

क्या यह सिर्फ तरीका नहीं है कि अजगर को काम करना चाहिए?

Solutions Collecting From Web of "लूप और IF स्टेटमेंट को गठबंधन करने का पायथनिक तरीका"

आप इस तरह जनरेटर अभिव्यक्ति का उपयोग कर सकते हैं:

 gen = (x for x in xyz if x not in a) for x in gen: print x 

पायथन के ज़ेन के अनुसार (यदि आप सोच रहे हैं कि आपका कोड "पायथनिक" है, तो जाने का स्थान है):

  • सुंदर बदसूरत से बेहतर है
  • स्पष्ट अंतर्निहित से बेहतर है
  • जटिल जटिल से बेहतर है
  • फ्लैट नेस्टेड से बेहतर है
  • पठनीयता गिनती

दो set के sorted intersection प्राप्त करने का पायथनिक तरीका है:

 >>> sorted(set(a).intersection(xyz)) [0, 4, 6, 7, 9] 

या उन तत्व जो xyz लेकिन इनमें से नहीं:

 >>> sorted(set(xyz).difference(a)) [12, 242] 

लेकिन एक अधिक जटिल लूप के लिए आप इसे अच्छी तरह से नामित जनरेटर अभिव्यक्ति पर फिर से और / या एक अच्छी तरह से नामित फ़ंक्शन पर कॉल करके इसे समतल कर सकते हैं। एक पंक्ति में सब कुछ फिट करने की कोशिश करना शायद ही कभी "पायथनिक" है


आपके प्रश्न और स्वीकृत उत्तर पर अतिरिक्त टिप्पणियां अपडेट करें

मुझे यकीन नहीं है कि आप क्या enumerate साथ करने का प्रयास कर रहे हैं, लेकिन यदि कोई शब्दकोश है, तो आप संभवत: इस तरह से चाबियाँ इस्तेमाल करना चाहते हैं:

 >>> a = { ... 2: 'Turtle Doves', ... 3: 'French Hens', ... 4: 'Colly Birds', ... 5: 'Gold Rings', ... 6: 'Geese-a-Laying', ... 7: 'Swans-a-Swimming', ... 8: 'Maids-a-Milking', ... 9: 'Ladies Dancing', ... 0: 'Camel Books', ... } >>> >>> xyz = [0, 12, 4, 6, 242, 7, 9] >>> >>> known_things = sorted(set(a.iterkeys()).intersection(xyz)) >>> unknown_things = sorted(set(xyz).difference(a.iterkeys())) >>> >>> for thing in known_things: ... print 'I know about', a[thing] ... I know about Camel Books I know about Colly Birds I know about Geese-a-Laying I know about Swans-a-Swimming I know about Ladies Dancing >>> print '...but...' ...but... >>> >>> for thing in unknown_things: ... print "I don't know what happened on the {0}th day of Christmas".format(thing) ... I don't know what happened on the 12th day of Christmas I don't know what happened on the 242th day of Christmas 

मैं व्यक्तिगत रूप से यह सबसे सुंदर संस्करण है:

 a = [2,3,4,5,6,7,8,9,0] xyz = [0,12,4,6,242,7,9] for x in filter(lambda w: w in a, xyz): print x 

संपादित करें

यदि आप लैम्ब्डा का उपयोग करने से बचने के लिए बहुत उत्सुक हैं तो आप आंशिक फ़ंक्शन अनुप्रयोग का उपयोग कर सकते हैं और ऑपरेटर मॉड्यूल का उपयोग कर सकते हैं (जो कि अधिकांश ऑपरेटरों के कार्यों को प्रदान करता है)।

https://docs.python.org/2/library/operator.html#module-operator

 from operator import contains from functools import partial print(list(filter(partial(contains, a), xyz))) 
 a = [2,3,4,5,6,7,8,9,0] xyz = [0,12,4,6,242,7,9] set(a) & set(xyz) set([0, 9, 4, 6, 7]) 

मैं शायद इसका उपयोग करेगा:

 for x in xyz: if x not in a: print x... 

आप जनरेटर भी उपयोग कर सकते हैं, यदि जनरेटर अभिव्यक्ति बहुत जटिल या जटिल हो जाते हैं:

 def gen(): for x in xyz: if x in a: yield x for x in gen(): print x 

intersection या intersection_update intersection उपयोग करें

  • प्रतिच्छेदन :

     a = [2,3,4,5,6,7,8,9,0] xyz = [0,12,4,6,242,7,9] ans = sorted(set(a).intersection(set(xyz))) 
  • प्रतिच्छेदन_अपडेट :

     a = [2,3,4,5,6,7,8,9,0] xyz = [0,12,4,6,242,7,9] b = set(a) b.intersection_update(xyz) 

    तो b आपका उत्तर है