İşte tumles oluşturmak için enumerate () kullanmayan bir alternatif var (SilentGhost'un orijinal cevabında olduğu gibi).
Bu benim için daha okunaklı görünüyor. (Belki numaralandırma alışkanlığı içinde olsaydım farklı hissederdim.) CAVEAT: İki yaklaşımın performansını test etmedim.
# 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 ]
Not: Python 2.7 sözdizimi. Python 3 için xrange
=> range
.
Kullanımı:
lst = [ 11*x for x in xrange(10) ]
somelist = delete_by_indices( lst, [0, 4, 5])
somelist:
[11, 22, 33, 66, 77, 88, 99]
--- İLAVE ---
Bir listeden birden fazla değeri silin. Yani, silmek istediğimiz değerlere sahibiz:
# 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 ]
Kullanımı:
somelist = delete__by_values( lst, [0, 44, 55] )
somelist:
[11, 22, 33, 66, 77, 88, 99]
Bu öncekiyle aynı cevap, ama bu sefer silinecek DEĞERLERİ sağladık [0, 44, 55]
.