2017-09-24 1 views
0

여러 (1 개 이상, 숫자가 다를 수 있음) 튜플이 포함 된 튜플 목록이 있습니다. 예를 들어,튜플 목록에서 튜플의 마지막 요소를 인덱싱하는 방법

[(5, 5), ((5, 5), (4, 5)), ((5, 5), (4, 2), (3, 3))] 

내가 인덱스에 첫 번째 요소에 대한 I 그러나 다음

if len(n) == 1: #n is the iterator 
     print n[0] 
    else 
     print n[-1] 

을 시도

#ideal result 
(5, 5,) (4, 5) (3, 3) 

각 튜플의 마지막 요소를, 좋아하는 것, 그것은 인쇄 5 대신에 (5, 5)

+0

목록의 첫 번째 항목에 여러 튜플/항목을 포함하지 않습니다. – wwii

+0

@wwii 지적 해 주셔서 고마워요, 나는 다양한 길이의 튜플 – proguorammer

답변

0
for item in theList: 
    last = item[-1] # could be an int or a tuple 
    if isinstance(last, tuple): 
     print last 
    else: 
     print item 

이 코드의 핵심 아이디어는 isinstance() 테스트입니다. 종래 DOCO은 :

참을 리턴

isinstance (객체 classinfo) 오브젝트 인수는 classinfo 인수의 인스턴스 또는 (간접, 직접 또는 가상) 서브 클래스 그 경우. classinfo가 유형 객체 (새 스타일 클래스)이고 객체가 해당 유형의 객체이거나 (직접, 간접 또는 가상) 하위 클래스 인 경우 true를 반환합니다. object가 클래스 인스턴스 또는 지정된 유형의 객체가 아닌 경우 함수는 항상 false를 반환합니다. classinfo가 클래스 또는 유형 객체 (또는 반복적으로 다른 튜플)의 튜플 인 경우 object가 클래스 또는 유형의 인스턴스 인 경우 true를 반환합니다. classinfo가 클래스, 유형 및 튜플의 클래스, 유형 또는 튜플이 아니면 TypeError 예외가 발생합니다.

0
l = [(5, 5), ((5, 5), (4, 5)), ((5, 5), (4, 2), (3, 3))] 
[ t[-1] if isinstance(t[-1], tuple) else t for t in l ] 

출력 :

[(5, 5), (4, 5), (3, 3)] 
관련 문제