[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]
このリスト内の各タプルから2番目の値を返すにはどうすればよいですか?
望ましい出力:
[2, 3, 5, 4, 7, 7, 8]
リスト内包表記 を使用します。
[x[1] for x in L]
イグナシオの答えはあなたが望むものです。しかし、誰かがPythonを学習しているので、それを分析してみましょう...前述のように、これはリスト内包表記です(たとえば、 DiveIntoPython で説明されています)。ここにいくつかのポイントがあります:
[x[1] for x in L]
[]
があることに注意してください。これらはリストを定義するものです。これにより、このコードはリストを返すため、list
タイプになります。したがって、この手法は「リスト理解」と呼ばれます。L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
を定義する必要があります。x
は内包表記にのみ存在する変数です-内包表記の外でx
にアクセスするか、上記の行を実行した後にtype(x)
と入力すると、NameError: name 'x' is not defined
と表示されます、type(L)
は<class 'list'>
を返します。x[1]
は各タプルのsecond項目を指しますが、x[0]
は最初の各項目を指します。質問する前にどれだけ問題を試みたかを伝えるのは難しいですが、おそらくあなたは理解に慣れていないだけでしょうか? DiveIntoPythonの第3章 、または理解に関するリソースを読むのに少し時間を費やします。幸運を。
リストを理解することは、絶対にこれを行う方法です。 を高速化する別の方法は、map
およびitemgetter
です。
import operator
new_list = map(operator.itemgetter(1), old_list)
OPがグーグルで答えを見つけることができなかったというコメントに応えて、私はそれを行うための非常に素朴な方法を指摘します。
new_list = []
for item in old_list:
new_list.append(item[1])
これは以下を使用します:
append
メソッドを呼び出します。誰かが言語を学ぼうとしていて、これらの基本的な部分を自分で組み立てることができない場合、彼らはそれを演習として見なければなりません時間。
人が何を望んでいるかを考え、それを利用可能なツールと比較する方法を学ぶ必要があります。 2番目の回答のすべての要素は、基本的なチュートリアルで説明する必要があります。 読むことなくプログラムすることを学ぶことはできません。
または、pandas
を使用できます。
>>> import pandas as pd
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> df=pd.DataFrame(L)
>>> df[1]
0 2
1 3
2 5
3 4
4 7
5 7
6 8
Name: 1, dtype: int64
>>> df[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>>
またはnumpy
:
>>> import numpy as np
>>> L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
>>> arr=np.array(L)
>>> arr.T[1]
array([2, 3, 5, 4, 7, 7, 8])
>>> arr.T[1].tolist()
[2, 3, 5, 4, 7, 7, 8]
>>>
Zip
でシーケンスのアンパックを使用することもできます。
L = [(1,2),(2,3),(4,5),(3,4),(6,7),(6,7),(3,8)]
_, res = Zip(*L)
print(res)
# (2, 3, 5, 4, 7, 7, 8)
これは、破棄された最初の要素からタプル_
も作成します。 2番目だけを抽出することは可能ですが、より冗長です:
from itertools import islice
res = next(islice(Zip(*L), 1, None))