如何索引元组列表中元组的最后一个元素

时间:2017-09-24 01:22:04

标签: python list tuples

我有一个元组列表,其中包含多个(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)

2 个答案:

答案 0 :(得分: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(object,classinfo)

如果object参数是classinfo参数的实例,或者是(直接,间接或虚拟)子类的实例,则返回true。如果classinfo是类型对象(新样式类)并且object是该类型的对象或其(直接,间接或虚拟)子类,则也返回true。如果object不是类实例或给定类型的对象,则该函数始终返回false。如果classinfo是类或类型对象的元组(或递归地,其他此类元组),则如果object是任何类或类型的实例,则返回true。如果classinfo不是类,类型和类别等的类,类型或元组,则会引发TypeError异常。

答案 1 :(得分: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)]