Zastosowanie str.join()
:
>>> mystring = ' '.join(map(str, (34.2424, -64.2344, 76.3534, 45.2344)))
>>> print mystring
34.2424 -64.2344 76.3534 45.2344
Będziesz musiał użyć mapy tutaj (który konwertuje wszystkie elementy w krotce do strun), ponieważ w przeciwnym razie dostaniesz TypeError
.
Nieco klarowania na map()
funkcję:
map(str, (34.2424, -64.2344, 76.3534, 45.2344)
odpowiada [str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344)]
.
To odrobinę szybciej niż przy użyciu wyrażeń listowych:
$ python -m timeit "map(str, (34.2424, -64.2344, 76.3534, 45.2344))"
1000000 loops, best of 3: 1.93 usec per loop
$ python -m timeit "[str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344)]"
100000 loops, best of 3: 2.02 usec per loop
Jak przedstawiono w komentarzach do tej odpowiedzi, str.join()
może generator zamiast listy. Zwykle byłoby to szybsze, ale w tym przypadku jest to wolniejsze.
Gdybym miał zrobić:
' '.join(itertools.imap(str, (34.2424, -64.2344, 76.3534, 45.2344)))
byłoby wolniejsze niż przy użyciu map()
. Różnica polega na tym, że imap()
zwraca generator, natomiast map()
zwraca listę (w Pythonie 3 zwraca generator)
Gdybym miał zrobić:
''.join(str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344))
Byłoby wolniej niż wprowadzenie nawiasów wokół lista ze zrozumieniem, z powodów wyjaśnionych here.
W przypadku (OP) żadna z opcji nie ma większego znaczenia, ponieważ wydajność nie wydaje się tu zbyt duża. Ale jeśli kiedykolwiek masz do czynienia z dużymi krotkami liczby/liczb całkowitych, to teraz wiesz, co możesz użyć dla maksymalnej wydajności :).
W Pythonie 3, odpowiedź brzmi dobrze, bo 'mapie()' 'jest generator w Pythonie 3. Ale w python2, byłoby lepiej użyj '' imap() '' – eyquem
@eyquem Wydaje mi się, że wydajność nie jest tutaj ogromnym problemem: p – TerryA
@eyquem faktycznie jest szybsze i bardziej wydajne korzystanie z kompilatora listy zamiast generatora dla złączenia: http: // stackoverflow.com/a/9061024/1240268 –