私があなたに与えることができる1つの方法:
new_list = [x for x in yourlist if not x <= 0 ]
私は次のように試しました:
>>> yourlist = [1, -2 , 0 , 3.9 , 4 , -5.8, -3.0 ]
>>> new_list = [x for x in yourlist if not x <= 0 ]
>>> print new_list
[1, 3.9, 4]
編集:
2 番目の方法:
L = [1, -2 , 0 , 3.9 , 4 , -5.8, -3.0 ]
out = []
for i in L[:]:
if i > 0:
out.append(i)
print out
EDIT2:
あなたが私の答えにコメントしたように、これが必要かもしれません:
第3の方法:
L = [1, -2 , 0 , 3.9 , 4 , -5.8, -3.0 ]
for obj in L[:]:
if obj <= 0:
del L[L.index(obj)]
print L
あなたの(UPDATED)コード のEDIT3 エラー
あなたのコードで:
import math
l= [0.]*10
for i in range(1,10):
l[i] = math.sin(i)
l = [x for x in l if x > 0]
print(i, l[i])
あなたはIndexError
このprint(i, l[i])
行に着きました。なので後for-loop
値にi
なり9
ます。そして、printステートメントの前に、リストからいくつかの要素を削除するl = [x for x in l if x > 0]
ので、リストのサイズがl
<の値よりも小さくなりi
ました。そして、間違った場所でprint(i, l[i])
インデックスを作成しようとしてi
います!
なんでしょう?リストの最後の要素を出力したい場合は、次のようにします。
print(i, l[len(l)-1])