यहाँ एक विकल्प है, कि tuples बनाने के लिए enumerate () का उपयोग नहीं किया जाता है (जैसा कि SilentGhost के मूल उत्तर में है)।
यह मुझे अधिक पठनीय लगता है। (शायद मैं अलग तरह से महसूस करूंगा अगर मैं एन्यूमरेट का उपयोग करने की आदत में था।) गुफा: मैंने दो तरीकों के प्रदर्शन का परीक्षण नहीं किया है।
# Returns a new list. "lst" is not modified.
def delete_by_indices(lst, indices):
indices_as_set = set(indices)
return [ lst[i] for i in xrange(len(lst)) if i not in indices_as_set ]
नोट: अजगर 2.7 वाक्यविन्यास। पायथन 3 के लिए, xrange
=>range
।
उपयोग:
lst = [ 11*x for x in xrange(10) ]
somelist = delete_by_indices( lst, [0, 4, 5])
somelist:
[11, 22, 33, 66, 77, 88, 99]
--- बक्शीश ---
सूची में से एक से अधिक मान को हटा दें। अर्थात्, हमारे पास वे मान हैं जिन्हें हम हटाना चाहते हैं:
# Returns a new list. "lst" is not modified.
def delete__by_values(lst, values):
values_as_set = set(values)
return [ x for x in lst if x not in values_as_set ]
उपयोग:
somelist = delete__by_values( lst, [0, 44, 55] )
somelist:
[11, 22, 33, 66, 77, 88, 99]
यह पहले की तरह ही उत्तर है, लेकिन इस बार हमने डिलीट किए जाने वाले वैल्यू की आपूर्ति की [0, 44, 55]
।