return
bedeutet, dass man Ende den Codepfad dieser Funktion, und gegebenenfalls, dass Sie einen einzigen Wert (der Wert kann natürlich ein Tupel sein, so dass man mehrere Werte durch einen Wert zurückgeben kann) zurückzukehren.
Wenn Sie eine Generatorfunktion schreiben wollen, yield
ist dein Freund:
def get_deck():
for rank in ranks:
for suit in suits:
yield [rank, suit]
Wenn wir jetzt die Funktion aufrufen, werden wir einen Generator Objekt erhalten:
>>> get_deck()
<generator object get_deck at 0x7f4458438ca8>
Wenn Sie Möchten Sie eine Liste basierend auf dem Generator generieren, können Sie list(..)
auf das Ergebnis der get_deck()
Funktion aufrufen:
>>> list(get_deck())
[[2, 'SPADE'], [2, 'HEART '], [2, 'DIAMOND'], [2, 'CLUB'], [3, 'SPADE'], [3, 'HEART '], [3, 'DIAMOND'], [3, 'CLUB'], [4, 'SPADE'], [4, 'HEART '], [4, 'DIAMOND'], [4, 'CLUB'], [5, 'SPADE'], [5, 'HEART '], [5, 'DIAMOND'], [5, 'CLUB'], [6, 'SPADE'], [6, 'HEART '], [6, 'DIAMOND'], [6, 'CLUB'], [7, 'SPADE'], [7, 'HEART '], [7, 'DIAMOND'], [7, 'CLUB'], [8, 'SPADE'], [8, 'HEART '], [8, 'DIAMOND'], [8, 'CLUB'], [9, 'SPADE'], [9, 'HEART '], [9, 'DIAMOND'], [9, 'CLUB'], [10, 'SPADE'], [10, 'HEART '], [10, 'DIAMOND'], [10, 'CLUB'], ['JACK', 'SPADE'], ['JACK', 'HEART '], ['JACK', 'DIAMOND'], ['JACK', 'CLUB'], ['QUEEN', 'SPADE'], ['QUEEN', 'HEART '], ['QUEEN', 'DIAMOND'], ['QUEEN', 'CLUB'], ['KING', 'SPADE'], ['KING', 'HEART '], ['KING', 'DIAMOND'], ['KING', 'CLUB'], ['ACE', 'SPADE'], ['ACE', 'HEART '], ['ACE', 'DIAMOND'], ['ACE', 'CLUB']]
Sie können auch gebaut eine Liste in der get_deck
Funktion, wie:
def get_deck():
result = []
for rank in ranks:
for suit in suits:
result.append([rank,suit])
return result
Was meinen Sie mit * Reverse *? –
Was meinst du damit, das Listenverständnis umzukehren? Meinen Sie, eine Liste mit einem Listenverständnis umzukehren? – Carcigenicate
'return' * returns * control zurück zum Aufrufer, was offensichtlich nach der ersten Iteration passiert. –