Python의 목록에서 각 튜플의 첫 번째 요소 가져오기
SQL 쿼리는 다음과 같은 튜플 목록을 제공합니다.
[(elt1, elt2), (elt1, elt2), (elt1, elt2), (elt1, elt2), (elt1, elt2), ...]
각 튜플의 첫 번째 요소를 모두 가지고 싶습니다.지금은 다음과 같이 사용합니다.
rows = cur.fetchall()
res_list = []
for row in rows:
res_list += [row[0]]
하지만 더 좋은 구문이 있을 수도 있다고 생각이 있을 것이라고 생각합니다.당신은 더 좋은 방법을 알고 계십니까?
목록 이해력을 사용합니다.
res_list = [x[0] for x in rows]
다음은 시연입니다.
>>> rows = [(1, 2), (3, 4), (5, 6)]
>>> [x[0] for x in rows]
[1, 3, 5]
>>>
대신에, 포장을 푸는 방법을 사용할 수 있습니다.x[0]
:
res_list = [x for x,_ in rows]
다음은 시연입니다.
>>> lst = [(1, 2), (3, 4), (5, 6)]
>>> [x for x,_ in lst]
[1, 3, 5]
>>>
두 방법 모두 실질적으로 동일한 작업을 수행하므로 원하는 것을 선택할 수 있습니다.
이를 위한 기능적인 방법은 다음을 사용하여 목록의 압축을 푸는 것입니다.
sample = [(2, 9), (2, 9), (8, 9), (10, 9), (23, 26), (1, 9), (43, 44)]
first,snd = zip(*sample)
print(first,snd)
(2, 2, 8, 10, 23, 1, 43) (9, 9, 9, 9, 26, 9, 44)
일부 이유로 목록 이해를 사용하지 않으려면 map과 operator.itemgetter를 사용할 수 있습니다.
>>> from operator import itemgetter
>>> rows = [(1, 2), (3, 4), (5, 6)]
>>> map(itemgetter(1), rows)
[2, 4, 6]
>>>
목록 이해도를 사용할 수 있습니다.
res_list = [i[0] for i in rows]
이것이 속임수가 될 것입니다.
res_list = [x[0] for x in rows]
c.f. http://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
다음과 같은 고차 함수보다 이해를 선호하는 이유에 대한 토론map
http://www.artima.com/weblogs/viewpost.jsp?thread=98196 을 방문하십시오.
언급URL : https://stackoverflow.com/questions/22412258/get-the-first-element-of-each-tuple-in-a-list-in-python
'programing' 카테고리의 다른 글
패키지의 압축 파일을 다운로드하고 보관하기 위해 파이썬의 pip을 사용하는 방법은 무엇입니까? (0) | 2023.07.16 |
---|---|
잘라내기 vs 삭제 시작의 장단점 (0) | 2023.07.16 |
마운트된 수명 주기 후크의 비동기 대기 (0) | 2023.07.16 |
두 판다 열 사이의 시간 차이(시간 및 분) 계산 (0) | 2023.07.16 |
Pandas/NumPy에서 열/변수가 숫자인지 여부를 확인하는 방법은 무엇입니까? (0) | 2023.07.16 |