他の人があなたのコードの何が問題なのかについて言及しており、あなたがやろうとしていることの理由を本当に理解できます
2 番目と 4 番目の要素を削除し、移動するリストをあまり気にしない場合は、単一のブレッドで行う必要があります。可能な解決策は、List COmprehension を使用することです
def inplace_del(it, rng):
return [e for i, e in enumerate(it) if i not in set(rng)]
inplace_del(z,(2,3))
[1, 2, 5]
y = xrange(1,6)
inplace_del(y,(2,3))
[1, 2, 5]
より良い解決策は itertools を使用することです
>>> from itertools import count, compress
>>> def in_del(it, rng):
rng = set(rng)
holes = (e not in rng for e in count(0))
return compress(it, holes)
>>> list(in_del(z,(2,3)))
[1, 2, 5]
>>> list(in_del(y,(2,3)))
[1, 2, 5]
>>>