2017-09-30 3 views
1

제가 튜플리스트를 가지고 있다고 말합니다. 원래 순서를 유지하면서 모든 튜플의 두 번째 요소를 자체 목록에 넣고 싶습니다. 이 작업을 수행하는 빠르고 쉬운 방법이 있습니까?튜플 목록에서 값을 가져 와서 다른 목록에 넣으시겠습니까?

예제를 정렬하기 전에.

[(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를 사용할 수 있습니다 Python3와

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

당신이 첫 번째 요소 또는 주변 map 첨자 할 zip 주위 list를 사용해야합니다 :

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

당신은 사용할 수 있습니다 itemgettermap와 함께 그것을 보여주기 위해. 파이썬 3에서 루프 나 다른 플로우 컨트롤과 결합하면, 그럴 필요가 없다.

첫 번째는 [t[1] for t in LoT]이며, 가장 관용적이며 마지막은 map(itemgetter(1),LoT) 일 수 있습니다.

+0

이 데이터 구조 란 무엇입니까? 내 콘솔에 "t [1] for LoT"를 연결하면 발전기 유형이라고 표시됩니다. – Justin

+0

콘솔에 * 정확히 * 내가 한 것과 작동해야하는 것을 넣으십시오. 그런 다음 사용 사례로 거꾸로 작업하십시오. 목록 이해력을 얻으려면'[...]'를 사용해야합니다. – dawg

+0

나는 그것을했고 그것이 작동한다, 나는 장래에 참조하는 방법을 궁금하게 생각하고 있었다. Radish는 "tuple unpacking"이라고 말합니다. – Justin

2

대안으로 튜플을 풀기.

[b for a,b in lst]