Berikut ini adalah alternatif, yang tidak menggunakan enumerate () untuk membuat tupel (seperti dalam jawaban asli SilentGhost).
Ini sepertinya lebih mudah dibaca oleh saya. (Mungkin saya akan merasa berbeda jika saya terbiasa menggunakan penghitungan.) CAVEAT: Saya belum menguji kinerja dari dua pendekatan.
# 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 ]
CATATAN: Sintaks Python 2.7. Untuk Python 3, xrange=> range.
Pemakaian:
lst = [ 11*x for x in xrange(10) ]
somelist = delete_by_indices( lst, [0, 4, 5])
somelist:
[11, 22, 33, 66, 77, 88, 99]
--- BONUS ---
Hapus beberapa nilai dari daftar. Artinya, kami memiliki nilai yang ingin kami hapus:
# 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 ]
Pemakaian:
somelist = delete__by_values( lst, [0, 44, 55] )
somelist:
[11, 22, 33, 66, 77, 88, 99]
Ini adalah jawaban yang sama seperti sebelumnya, tetapi kali ini kami menyediakan NILAI yang akan dihapus [0, 44, 55].