取り外し要素を、遅く、危険です。最良の選択は、新しいリストnew_list = [x for x in l if not isinstance(x,str)]
を作成することです。リストは本当に大きい場合は、最初に条件に一致するすべての要素を検索し、後
strings = [i for i,x in enumerate(l) if isinstance(x,str)]
for x in reversed(strings):
del l[x]
だから、最初の選択肢(最速)それらを削除することができます
def filter_list(l):
return [x for x in l if not isinstance(x, str)]
print(filter_list([1, 2, 3, '4', '5', 6, '7', 8]))
値の第2の(場合の数をリストのサイズが大きい):
def filter_list(l):
strings = [i for i, x in enumerate(l) if isinstance(x, str)]
for x in reversed(strings):
del l[x]
l = [1, 2, 3, '4', '5', 6, '7', 8]
filter_list(l)
print(l)
あなたは反復処理中のリストを変更しています。これは通常涙で終わります。リストを理解してみてください。 –