2017-09-24 12 views
0

タプルのリストが複数ある(1つ以上、数が異なる)タプルが含まれています。例えば、タプルのリスト内のタプルの最後の要素をインデックスする方法

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

は、私は最初の要素のために、その印刷、しかし以下

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がクラスまたは型のインスタンスであれば真を返します。 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)] 
関連する問題