Pythonで1つの項目を除くすべての項目にインデックスを付ける 質問する

Pythonで1つの項目を除くすべての項目にインデックスを付ける 質問する

リスト(または配列など)のすべての要素にインデックスを付ける簡単な方法はありますか?を除外する特定のインデックスに対しては? 例:

  • 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])

これは一般に、上記のリスト内包表記よりもはるかに高速です。

おすすめ記事