[python] 목록에있는 튜플의 값에 액세스

[(1,2), (2,3), (4,5), (3,4), (6,7), (6,7), (3,8)]

이 목록 내의 각 튜플에서 두 번째 값을 어떻게 반환합니까?

원하는 출력 :

[2, 3, 5, 4, 7, 7, 8]



답변

A의 지능형리스트 .

[x[1] for x in L]


답변

Ignacio의 대답은 당신이 원하는 것입니다. 그러나 파이썬을 배우는 사람으로서 여러분을 위해 해부 해 보겠습니다 … 언급했듯이, 그것은 목록 이해입니다 ( 예를 들어 DiveIntoPython3 에서 다룹니다 ). 다음은 몇 가지 사항입니다.

[x[1] for x in L]

  • 통지 []코드의 라인 주위의합니다. 이것이 목록을 정의하는 것입니다. 이것은이 코드가 목록을 반환하므로 list유형이 있음을 나타냅니다. 따라서이 기술을 “목록 이해”라고합니다.
  • L은 원래 목록입니다. 따라서 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]각 튜플 의 두 번째 항목을 x[0]가리키고 첫 번째 항목 각각을 가리 킵니다.
  • 따라서이 코드 줄은 문자 그대로 “목록 L의 모든 튜플에 대해 튜플의 두 번째 항목을 반환합니다”라고 읽습니다.

질문하기 전에 문제를 얼마나 시도했는지 말하기는 어렵지만 이해에 익숙하지 않았을 수도 있습니다. 나는 DiveIntoPython의 3 장 이나 이해에 관한 자료를 읽는데 시간을 할애 할 것 입니다. 행운을 빕니다.


답변

목록 이해는 절대적으로이를 수행하는 방법입니다. 또 다른 방법으로 해야 더 빠를 수있다 mapitemgetter.

import operator

new_list = map(operator.itemgetter(1), old_list)

OP가 Google에서 답변을 찾을 수 없다는 의견에 대한 응답으로 매우 순진한 방법을 지적하겠습니다.

new_list = []
for item in old_list:
    new_list.append(item[1])

이것은 다음을 사용합니다.

  1. 빈 목록을 참조하는 변수 선언.
  2. for 루프.
  3. append목록 에서 메서드를 호출합니다 .

누군가가 언어를 배우려고하는데이 기본적인 부분을 스스로 모을 수 없다면, 그것을 연습 으로 보아야합니다. 없다면, 그것을 20 시간이 걸리더라도 스스로해야합니다.

원하는 것을 생각 하고 사용 가능한 도구 와 비교하는 방법을 배워야합니다 . 두 번째 답변의 모든 요소는 기본 자습서에서 다루어야합니다. 하나를 읽지 않고는 프로그래밍을 배울 수 없습니다 .


답변

또는 다음을 사용할 수 있습니다 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)

이것은 또한 _버려진 첫 번째 요소에서 튜플 을 만듭니다 . 두 번째 만 추출 할 수 있지만 더 자세한 정보는 다음과 같습니다.

from itertools import islice

res = next(islice(zip(*L), 1, None))


답변

a = [(0,2), (4,3), (9,9), (10,-1)]
print(list(map(lambda item: item[1], a)))


답변