1

私はこの辞書の配列を持っています

for row in array:
        if row['val'] < 11:
            array.pop(array.index(row))

その値の1つが特定のしきい値を下回っている場合、配列から辞書を削除しようとしています。機能しますが、配列内のアイテムの1つに対してのみです

現在の私の解決策は、for ステートメントを 2 回実行することです。これにより、余分な値が削除されます。これについてどうすればよいですか?

4

3 に答える 3

8

繰り返し処理しているコレクションを変更しないでください。代わりに、リスト内包表記を使用してください:

array = [row for row in array if row['val'] >= 11]

また、もう 1 つクリアしましょう。Pythonにはネイティブ配列がありません。リストがあります。

于 2013-07-25T18:26:16.800 に答える
1
[el for el in array if test_to_be_preserved(el)]

回避する必要がある場合test_to_be_preservedに返す関数はどこにあり、関数から削除する必要がある場合はTrueelFalseelarray

または、元の配列の要素の順序を変更しても構わない場合:

  i = 0
  while i < len(array):
    el = array[i]
    if should_remove(el):
        array[i] = array.pop()
    else:
        i += 1
于 2013-07-25T18:25:36.403 に答える