2

リストの 1 つの要素を削除する方法は知っていますが、多くの要素を削除しようとすると構文エラーが発生しますが、その理由がわかりません。

a=[[00],[01],[10],[11]]
b=[0,3]

[[del a[x]] for x in b]

結果は次のようになります。

a = [[01],[10]]

ありがとうございます...私は問題を理解しています...del配列のインデックスを変更するaので、範囲外になります! :)

今別の質問は質問を参照してください...もし私が得たならacそして私は作成したいですb

a=[[00],[01],[10],[11]]
c=[[1],[2,3,4],[5,6],[7]]

私はその通りに行きます。

b = [i for i,el in enumerate(c) for item in el if len(el)<2]

そして、私はこれをします

a = [x for i, x in enumerate(a) if i not in b]

それを行う簡単な方法はありますか?inの要素を作成bしてから「削除」しますか?ba

4

4 に答える 4

3

リスト内包表記の使用:

>>> a=[[00],[01],[10],[11]]
>>> b=[0,3]
>>> # b = set(b)
>>> a = [x for i, x in enumerate(a) if i not in b]
>>> a
[[1], [10]]
于 2013-09-08T12:52:25.147 に答える
1

IndexError: list assignment index out of rangeリストの末尾から要素を削除すると、要素を削除すると、それ以降の要素のみが影響を受けるため、例外は発生しません。

>>> a=[[00],[01],[10],[11]]
>>> b=[0,3]
>>> for i in sorted(b, reverse=True):
...     del a[i]
...
>>> a
[[1], [10]]
于 2013-09-09T08:20:41.913 に答える
1

numpy要素を削除する非常に便利な方法があります。

>>> import numpy as np
>>> a = np.array([[00],[01],[10],[11]])
>>> b = np.array([0,3])
>>> a
array([[ 0],
       [ 1],
       [10],
       [11]])
>>> b
array([0, 3])
>>> np.delete(a, b, axis=0)
array([[ 1],
       [10]])
于 2013-09-08T14:14:23.660 に答える
1

アイテムをその場で削除する必要がある場合は、次のようにできます。

map(lambda i: a.pop(i), sorted(b, key=lambda i: -i))

また

for i in sorted(b, key=lambda x: -x):
    del a[i]

また

for i in sorted(b)[::-1]:
    del a[i]

out of range削除する前に b のアイテムを並べ替える必要があるため、例外はありません

于 2013-09-08T13:04:31.623 に答える