次の 2 つの例では、2 つの異なる種類のループを使用して、リストから負の要素を削除しようとしています。
最初に通常のループを使用してみましfor i in list
たが、この場合list1.remove(elm)
、リストのサイズが1要素減ります。したがって、次のループでは、2 番目の要素が最初の要素の位置に移動します。if elm < 0
そのため、次のループで2 番目の要素がテストされません。したがって、リストからすべての否定的な要素が削除されるわけではありません。
次に、スライスを使用してみました。スライスから理解したのは、一時的なリストを作成することです。だから、私がfor i in list2[:]
それを行うと、新しい一時的なものが作成されますlist2 = [-1,3,-2,-5,4,7,8]
が、それでも明確な画像が得られませんでした. 全てのマイナス要素を取り除きます。
#!/usr/env/bin
# remove all the negative value from the list.
list1 = [-1,3,-2,-5,4,7,8]
list2 = [-1,3,-2,-5,4,7,8]
# Looping through the list.
for elm in list1:
if elm < 0:
list1.remove(elm)
print 'list1: ', list1
# Looping through the list using slice.
for elm in list2[:]:
if elm < 0:
list2.remove(elm)
print 'list2: ', list2
Output:-python slice.py
list1: [3, -5, 4, 7, 8]
list2: [3, 4, 7, 8]