私はこの辞書の配列を持っています
for row in array:
if row['val'] < 11:
array.pop(array.index(row))
その値の1つが特定のしきい値を下回っている場合、配列から辞書を削除しようとしています。機能しますが、配列内のアイテムの1つに対してのみです
現在の私の解決策は、for ステートメントを 2 回実行することです。これにより、余分な値が削除されます。これについてどうすればよいですか?
繰り返し処理しているコレクションを変更しないでください。代わりに、リスト内包表記を使用してください:
array = [row for row in array if row['val'] >= 11]
また、もう 1 つクリアしましょう。Pythonにはネイティブ配列がありません。リストがあります。
[el for el in array if test_to_be_preserved(el)]
回避する必要がある場合test_to_be_preserved
に返す関数はどこにあり、関数から削除する必要がある場合はTrue
el
False
el
array
または、元の配列の要素の順序を変更しても構わない場合:
i = 0
while i < len(array):
el = array[i]
if should_remove(el):
array[i] = array.pop()
else:
i += 1