Wenn ich lese die Frage Python string.join(list) on object array rather than string array, finde ich den folgenden Satz:Verwendung str.join mit Generator Ausdruck in Python
', '.join(str(x) for x in list)
Ich habe bereits wissen, über (str(x) for x in list)
einen Generator Ausdruck ist, ich weiß Generator auch ein iterable ist . Der folgende Code verifiziert die Richtigkeit meiner Sichtweise.
>>> gen = (x for x in [1,2,3])
<generator object <genexpr> at 0x104349b40>
>>> from collections import Iterable
>>> isinstance(gen, Iterable)
True
Zur gleichen Zeit, str.join(iterable)
eine Zeichenfolge zurück, die die Verkettung der Strings in der iterable ist. So funktioniert das Folgende gut, wie ich es wünsche.
>>> ",".join((str(x) for x in [1,2,3]))
'123'
hier dann die Frage kommt, warum der Code bei dir auch in Ordnung funktioniert, warum keine Klammern im Funktionsaufruf muß.
', '.join(str(x) for x in [1,2,3])
Immerhin str(x) for x in [1,2,3]
selbst ist kein Generator.
>>> tmp = str(x) for x in [1,2,3]
File "<stdin>", line 1
tmp = str(x) for x in [1,2,3]
^
SyntaxError: invalid syntax