2009-04-07 6 views
20

これはPythonでこれを行う良い方法だと確信していますが、私は言語にはかなり新しいので、これが簡単なのであれば私を許してください!特定のインデックスを持つPythonリストから項目を選ぶ

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

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

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

[9, 2, 6] 

(main_listからインデックス2,4及び5を有する、すなわち、要素)。

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

答えて

67
[main_list[x] for x in indexes] 

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

+1

今はこれがエレガントです。 +1 –

+1

リスト内包表記は非常に涼しく、読みやすいです。彼らはしばしば反復よりも速くなることがよくあります。 –

+0

これは本当にいいです。それを実現することなく、私が望んでいたものとまったく同じです! – Ben

2
t = [] 
for i in indexes: 
    t.append(main_list[i]) 
return t 
+0

これはリスト内包未満エレガントですが、私は、Pythonに完全に新しい誰かのための答えとして、より良い、それが好き。 –

1

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

[e for i, e in enumerate(main_list) if i in indexes] 
+0

実際これははるかにエレガントです:)少し読みにくいですが、 –

+0

ああ!それは私が考えていたものです。非常にきちんとした! – Ben

1
map(lambda x:main_list[x],indexes) 
関連する問題