2017-09-30 2 views
1

私にはタプルのリストがあります。元の順序を維持しながら、すべてのタプルの2番目の要素を独自のリストに入れたいと思います。これを行うには、迅速かつ汚れた方法がありますか?タプルリストの値をとり、別のリストに入れますか?

ソート前の例。

[(0,'apple'), 
(1,'pineapple'), 
(11,'cherry'), 
(12,'banana'), 
(13,'mango'), 
(14,'boot'), 
(15,'mangosteen')] 

['apple', 
'pineapple', 
'cherry', 
'banana', 
'mango', 
'boot', 
'mangosteen'] 

答えて

3

あなたをソートした後、基本的にちょうどリストの各タプルのインデックス1にある要素を取得する動作をマッピングして、新しいリストを作成する必要があります。

あなたはリストの内包表記を使用して、各タプルの関心の要素にアクセスすることができます
>>> LoT 
[(0, 'apple'), (1, 'pineapple'), (11, 'cherry'), (12, 'banana'), (13, 'mango'), (14, 'boot'), (15, 'mangosteen')] 

>>> [t[1] for t in LoT] 
['apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen'] 

あなたはタプルのアンパックを使用することができます与えられた

>>> [b for _,b in LoT] 
['apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen'] 

どのタプルが2要素以外のものであれば失敗します。

また、あなたはzipを使用することができます。

>>> list(zip(*LoT))[1] 
('apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen') 

あなたはmapitemgetterを使用することができます。

>>> list(map(itemgetter(1),LoT)) 
['apple', 'pineapple', 'cherry', 'banana', 'mango', 'boot', 'mangosteen'] 

のpython3を使用すると、最初の要素や周りmapを添字しzip周りlistを使用する必要がありますそれを表示する。 Python 3のループやその他のフロー制御と組み合わせると、その必要はないでしょう。

最初の、[t[1] for t in LoT]は、最も慣用的であり、最後のmap(itemgetter(1),LoT)が最も速いかもしれません。

+0

このデータ構造とは何ですか?私が "t [1] for LoT"を差し込むとき、私のコンソールは発電機のタイプだと言っています。 – Justin

+0

コンソールに*正確に*私がやったことと動作するはずです。その後、そこからあなたのケースを使用して後方に作業します。あなたはリストの理解を得るために '[...]'を使う必要があります。 – dawg

+0

私はそれをして、それは動作し、私は将来どのように参照するのだろうかと思っていた。ラディッシュは「タプルのアンパック」と呼ばれていますか? – Justin

2

タプルアンパックを代わりに使用します。

[b for a,b in lst] 
関連する問題