48

Pythonでこれを行うための良い方法があると確信していますが、私はこの言語にかなり慣れていないので、これが簡単な方法である場合はご容赦ください。

リストがあり、そのリストから特定の値を選択したいと思います。私が選びたい値は、リスト内のインデックスが別のリストで指定されている値です。

例えば:

indexes = [2, 4, 5]
main_list = [0, 1, 9, 3, 2, 6, 1, 9, 8]

出力は次のようになります。

[9, 2, 6]

(つまり、main_listのインデックス2、4、および5の要素)。

これはリスト内包表記のようなものを使用して実行できるはずだと思いますが、理解できません(特に、リスト内包表記を使用しているときにアイテムのインデックスにアクセスする方法がわかりません)。

4

6 に答える 6

116
[main_list[x] for x in indexes]

これは、リスト内包表記を使用して、オブジェクトのリストを返します。

于 2009-04-07T09:50:52.837 に答える
4
t = []
for i in indexes:
    t.append(main_list[i])
return t
于 2009-04-07T09:47:29.427 に答える
2
map(lambda x:main_list[x],indexes)
于 2009-04-07T14:33:09.803 に答える
2

あなたが得意ならnumpy

import numpy as np
main_array = np.array(main_list) # converting to numpy array
out_array = main_array.take([2, 4, 5])
out_list = out_array.tolist() # if you want a list specifically
于 2020-01-19T12:44:00.810 に答える
1

Yuval Aのソリューションはかなり明確でシンプルだと思います。しかし、実際に1行のリスト内包表記が必要な場合:

[e for i, e in enumerate(main_list) if i in indexes]
于 2009-04-07T09:50:51.107 に答える