2017-09-24 154 views
0

我有一個元組列表,其中包含多個(1個到多個,數量不定)元組。例如,如何在元組列表中索引元組的最後一個元素

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

我想索引的每個元組的最後一個元素,

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

我已經但是嘗試了以下

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

,爲第一要素,它打印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是一個類型對象(new-style class),並且object是該類型的對象或其(直接,間接或虛擬)子類的對象,則也會返回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)] 
相關問題