मैं नियमित अभिव्यक्ति के आधार पर एक सूची में तारों को फ़िल्टर करना चाहता हूं।नियमित अभिव्यक्तियां: सूची में खोजें
क्या [x for x in list if r.match(x)]
से बेहतर कुछ है?
मैं नियमित अभिव्यक्ति के आधार पर एक सूची में तारों को फ़िल्टर करना चाहता हूं।नियमित अभिव्यक्तियां: सूची में खोजें
क्या [x for x in list if r.match(x)]
से बेहतर कुछ है?
filter(r.match, list)
पूर्ण उदाहरण:
import re
mylist = ["dog", "cat", "wildcat", "thundercat", "cow", "hooo"]
r = re.compile(".*cat")
newlist = filter(r.match, mylist)
print str(newlist)
प्रिंटों:
['cat', 'wildcat', 'thundercat']
हाय वहाँ, जब मैं उपरोक्त कोड चलाता हूं, तो मुझे 'xx57acda0 पर 'फ़िल्टर ऑब्जेक्ट मिलता है>' मैं गलत क्या कर रहा हूं? – Joshua
पायथन डॉक्स (पायथन 2.7.12) के अनुसार: https://docs.python.org/2/library/functions.html#filter फ़िल्टर किसी ऑब्जेक्ट को कोई सूची नहीं देता है। आप यह कोड भी देख सकते हैं: https://repl.it/X3G/5786 (बस चलाएं) – Mercury
धन्यवाद। मैं मैक पर पायथन 3.5.2 का उपयोग कर रहा हूं। मैंने आपके लिंक की कोशिश की। बेशक यह काम करता है, हालांकि यह सुनिश्चित नहीं है कि मुझे वह संदेश क्यों मिलता है। मैंने 'स्ट्र' को भी हटा दिया है क्योंकि 'फ़िल्टर' किसी भी तरह की सूची का लाभ नहीं लेता है ... – Joshua
वास्तव में, सूची comprehensions आमतौर पर ऐसी फिल्टर, कम करने, लैम्ब्डा, आदि –
@Ivo के रूप में कार्यात्मक निर्माणों से अधिक पसंद कर रहे हैं : वे आमतौर पर पसंद करते हैं क्योंकि वे आमतौर पर स्पष्ट और अक्सर अधिक संक्षिप्त होते हैं। हालांकि इस मामले में, 'फ़िल्टर' संस्करण पूरी तरह से स्पष्ट है और इसमें बहुत कम शोर है। – sepp2k