2017-10-31 14 views
0

リスト内のファイルの表示を表す混合データ型(整数を含む整数とタプル)のリストを持っていますfiles。私は、各ファイルから計算した数値を集計する必要があるため、単純な整数とは違ってタプルを扱いたいと思っています。リストindをループしてそのエントリがタプルであるかどうかをチェックし、それを関数find_fnameに渡すと、各エントリの後にNoneが表示されるのはなぜですか?ここでは、最小限の作業例です:混合データ型のリストから整数を取得する

def find_fname(ind, files): 
    print files[ind] 


files = ['file1','file2','file3','file4'] 

ind = [0,(1,2),3] 

for thing in ind: 
    #check to see if entry in list is tuple 
    if hasattr(thing, '__iter__'): 
     print find_fname(thing[0],files) 
     print find_fname(thing[1],files) 
    else: 
     print find_fname(thing,files) 

リターン:あなたが印刷しているため機能find_fnameの戻り値はNoneある

file1 
file2 
file3 
file4 

答えて

1

file1 
None 
file2 
None 
file3 
None 
file4 
None 

私はfind_fnameリターンを見たいのですが戻り値ではなく値です。関数が何も返さない場合は、暗黙的にNoneを返します。

何をすべきである。

def find_fname(ind, files): 
    return files[ind] 
+0

あなたは関数内から印刷カント? – dubbbdan

+1

はい、できますが、戻り値を 'print find_fname(...)'のようにコードに出力しているので、2回印刷することになります。 – ozgur

+0

ok、ありがとう! – dubbbdan

関連する問題