Rückkehr Tupel mit einem einzigen Element aus einer Funktion
Kam gerade über dieses kleine bisschen Verrücktheit in Python und dachte, ich würde Dokument schreiben Sie es als eine Frage hier im Fall, jemand versucht eine Antwort zu finden, mit dem gleichen erfolglosen Suche Begriffe, die ich war
Aussieht, Tupel-Auspacken, können Sie es nicht wieder ein Tupel der Länge 1, wenn Sie erwarten, dass die Iteration über den Rückgabewert. Obwohl es scheint, dass der Schein trügt. Siehe die Antworten.
>>> def returns_list_of_one(a):
... return [a]
...
>>> def returns_tuple_of_one(a):
... return (a)
...
>>> def returns_tuple_of_two(a):
... return (a, a)
...
>>> for n in returns_list_of_one(10):
... print n
...
10
>>> for n in returns_tuple_of_two(10):
... print n
...
10
10
>>> for n in returns_tuple_of_one(10):
... print n
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>
InformationsquelleAutor der Frage mcstrother | 2011-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie explizit die machen es zu einem Tupel (finden Sie auf der offiziellen tutorial):
InformationsquelleAutor der Antwort multipleinterfaces
Ist dies nicht ein bug, ein ein-Tupel konstruiert, indem
val,
oder(val,)
. Es ist das Komma und nicht die Klammern definieren, dass das Tupel in python-syntax.Ihre Funktion ist tatsächlich wieder
a
selbst, das ist natürlich nicht durchsuchbar.Zitieren Sequenz und Tupel docs:
InformationsquelleAutor der Antwort shelhamer
(a)
ist nicht ein einzelnes element-Tupel, es ist nur eine eingeklammerte Ausdruck. Verwenden(a,)
.InformationsquelleAutor der Antwort hammar
Statt des hässlichen Komma, können Sie die
tuple()
built-in Methode.InformationsquelleAutor der Antwort John