2017-03-16 1 views
0

を抽出するために、私が書かれたdoctestを持っている:デフ(トリプル)をextract_second

を: 「」 "トリプルのリストを考えると、各トリプル

If an item is not a triple, return None for that element 

>>> extract_second([('a',3,'x'),('b',4,'y')]) 
[3, 4] 
>>> extract_second([('c',5,'z'),('d',6)]) 
[5, None] 
>>> extract_second([('a',3,'x'),('b',4,'y')]) == [3, 4] 
True 
""" 
for x in triples: 
    return x[1] 

の第二の要素を持つリストを返します

答えて

0

答えが1つしか返されないのは、return文がforループに遭遇すると直ちにそれを破るためです。 sometに相当するこのよう興:

for x in list: 
    break 
return x[1] 

そして、あなたの問題を解決するには以下のような次のようになります。

results = [] 
for i in triples: 
if len(i) == 3: 
    results.append(i[1]) 
else: 
    results.append(None) 
return results 

このソリューションは、結果と呼ばれるリストへの答えを追加し、そしてそれは後に結果を返します。 トリプルを繰り返して終了しました。