programing

Python의 목록에서 각 튜플의 첫 번째 요소 가져오기

bestprogram 2023. 7. 16. 13:45

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

다음과 같은 고차 함수보다 이해를 선호하는 이유에 대한 토론maphttp://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