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