リスト(または配列など)のすべての要素にインデックスを付ける簡単な方法はありますか?を除外する特定のインデックスに対しては? 例:
mylist[3]
位置3のアイテムを返しますmilist[~3]
3を除くリスト全体を返します
ベストアンサー1
のためにリスト、リスト コンプを使用できます。たとえば、3 番目の要素を除いたb
のコピーを作成するには、次のようにします。a
a = range(10)[::-1] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
b = [x for i,x in enumerate(a) if i!=3] # [9, 8, 7, 5, 4, 3, 2, 1, 0]
これは非常に汎用的で、numpy 配列を含むすべての反復可能オブジェクトで使用できます。[]
を に置き換えると()
、b
はリストではなく反復子になります。
または、次のようにインプレースで実行することもできますpop
。
a = range(10)[::-1] # a = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
a.pop(3) # a = [9, 8, 7, 5, 4, 3, 2, 1, 0]
でナンピーブールインデックスを使用してこれを行うことができます。
a = np.arange(9, -1, -1) # a = array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
b = a[np.arange(len(a))!=3] # b = array([9, 8, 7, 5, 4, 3, 2, 1, 0])
これは一般に、上記のリスト内包表記よりもはるかに高速です。