2017-03-16 3 views
0

Ich habe ein doctest geschrieben "" "eine Liste von Tripeln Gegeben, eine Liste mit dem zweiten Element jedes Dreifachdoctest zum Extrahieren Sekunden

Rück
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] 

obwohl der Code nicht den 1. Index der 2. Liste eingegeben zurückgibt. Alle Ideen?

Antwort

0

Der Grund, warum Sie nur eine einzige Antwort erhalten, ist, weil die Return-Anweisung Ihre for-Schleife bricht, sobald es gefunden wird das Äquivalent von etwas Hing wie folgt aus:

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

Diese Lösung hängt die Antwort auf eine Liste Ergebnisse und gibt Ergebnisse genannt, nachdem es ist:

for x in list: 
    break 
return x[1] 

Und eine Lösung für Ihr Problem als solches wäre fertig durchlaufen durch Tripel.

Verwandte Themen