छानने मान लिया जाये कि मैं एक टपल की तरह है। तो मेरी नई सूची इस तरह दिखेगी:ढूँढना और उन्हें
[('img-1','iii'), ('img-2','jjj')]
धन्यवाद!
छानने मान लिया जाये कि मैं एक टपल की तरह है। तो मेरी नई सूची इस तरह दिखेगी:ढूँढना और उन्हें
[('img-1','iii'), ('img-2','jjj')]
धन्यवाद!
एक ही रास्ता:
>>> l = [('text-1','xxx'), ('img-1','iii'), ('img-2','jjj'), ('text-2','xxx')]
>>> [t for t in l if t[0].startswith('img')]
[('img-1', 'iii'), ('img-2', 'jjj')]
एक और तरीका है:
>>> filter(lambda x: x[0].startswith('img'), l)
[('img-1', 'iii'), ('img-2', 'jjj')]
पहले एक सूची समझ कहा जाता है। संबंधित तकनीक के लिए F.C.'s answer देखें। मूल वाक्यविन्यास [{expression} for {item_var_or_vars} in {iterable} if {boolean_expression}]
है। यह अर्थ की दृष्टि से कुछ इस तरह के बराबर है:
new_list = []
for {item_var_or_vars} in {iterable}:
if {boolean_expression}:
new_list.append({expression})
if {boolean_expression}
सा वैकल्पिक है, बस के रूप में यह पाश के लिए में है।
दूसरी बस में निर्मित समारोह filter
है, जो एक परीक्षण समारोह और एक iterable स्वीकार करता है, और हर तत्व यह है कि "गुजरता" परीक्षण समारोह युक्त एक सूची देता है। lambda
, यदि आपने इसे पहले नहीं देखा है, तो फ़ंक्शन को परिभाषित करने का एक त्वरित तरीका है।
def keep_this_element(element):
return element[0].startswith('img') # returns True for ('img...', '...')
new_list = filter(keep_this_element, l) # keeps only elements that return True
शायद ऐसा कुछ?
l2 = [item for item in l1 if item[0].startswith('img')]
यह अच्छा है: आप इस के बजाय कर सकता है। धन्यवाद! – sidewinder
बस एक और तरीके के साथ generator expression (यह बड़ी सूचियों पर कुछ अंतर ला सकती है)
>>> l = [('text-1','xxx'), ('img-1','iii'), ('img-2','jjj'), ('text-2','xxx')]
>>> (x for x in l if x[0].find('img') == 0)
0: <generator object <genexpr> at 0x917a00>
>>> gen = (x for x in l if x[0].find('img') == 0)
>>> list(gen)
1: [('img-1', 'iii'), ('img-2', 'jjj')]
tuple_filter = lambda t, i, w: filter(lambda a: a[i].startswith(w), t)
newtuple = tuple_filter(thetuple, 0, 'img')
यह बहुत अच्छा है। क्या इन दोनों तकनीकों का नाम है? मैं इन तरीकों पर और अधिक पढ़ना चाहता हूं। धन्यवाद। – sidewinder
@Awais, अधिक विस्तृत स्पष्टीकरण के लिए मेरे संपादन देखें। – senderle
पहला एक [सूची समझ] है (http://docs.python.org/tutorial/datastructures.html#list-comprehensions) दूसरा है [फ़िल्टर] (http://docs.python.org/library/functions .html # फ़िल्टर) और एक [लैम्ब्डा अभिव्यक्ति] (http://docs.python.org/reference/expressions.html#lambda) – agf