Boost tuple был бы моим предпочтительным выбором для обобщенной системы возврата более одного значения из функции.
Возможный пример:
include "boost/tuple/tuple.hpp"
tuple <int,int> divide( int dividend,int divisor )
{
return make_tuple(dividend / divisor,dividend % divisor )
}
myList = ['a','b','c','d']
myString = ",".join(myList )
Это не будет работать, если список будет содержать числа.
<час>Как Ricardo Reyes предложенный, если это содержит нестроковые типы (такие как целые числа, плавания, bools, Ни один) тогда, делает:
myString = ','.join(map(str, myList))
Если я не отсутствую, что-то, ','.join(foo)
должно сделать то, что Вы просите.
>>> ','.join([''])
''
>>> ','.join(['s'])
's'
>>> ','.join(['a','b','c'])
'a,b,c'
(редактирование: и поскольку jmanning2k указывает,
','.join([str(x) for x in foo])
более безопасно и вполне Pythonic, хотя получившую строку будет трудно проанализировать, если элементы могут содержать запятые - в той точке, Вам нужна полная мощность csv
модуль, как Douglas указывает в своем ответе.)
Не делайте Вас, просто хотите:
",".join(l)
, Очевидно, это становится более сложным, если необходимо заключить запятые в кавычки/выйти и т.д. в значениях. В этом случае я предложил бы смотреть на csv модуль в стандартной библиотеке:
l=['a', 1, 'b', 2]
print str(l)[1:-1]
Output: "'a', 1, 'b', 2"
@Peter Hoffmann
Используя выражения генератора обладает преимуществом также создания итератора, но сохраняет импорт itertools. Кроме того, понимания списка обычно предпочитаются карте, таким образом, я ожидал бы, что выражения генератора будут предпочтены IMAP.
>>> l = [1, "foo", 4 ,"bar"]
>>> ",".join(str(bit) for bit in l)
'1,foo,4,bar'
Вот альтернативное решение в Python 3.0, который позволяет объекты несписка строк:
>>> alist = ['a', 1, (2, 'b')]
стандартный путь
>>> ", ".join(map(str, alist))
"a, 1, (2, 'b')"
альтернативное решение
>>> import io
>>> s = io.StringIO()
>>> print(*alist, file=s, sep=', ', end='')
>>> s.getvalue()
"a, 1, (2, 'b')"
ПРИМЕЧАНИЕ: пространство после запятой является намеренным.
Почему волшебство карты/лямбды? Разве это не работает?
>>>foo = [ 'a', 'b', 'c' ]
>>>print ",".join(foo)
a,b,c
>>>print ",".join([])
>>>print ",".join(['a'])
a
Редактирование: @mark-biek указывает на случай для чисел. Возможно, понимание списка:
>>>','.join([str(x) for x in foo])
больше "pythonic".
Edit2: Спасибо за предложения. Я буду использовать генератор, а не понимание списка в будущем.
>>>','.join(str(x) for x in foo)
@jmanning2k с помощью понимания списка имеет оборотную сторону создания нового временного списка. Лучшее решение использовало бы itertools.imap, который возвращает итератор
from itertools import imap
l = [1, "foo", 4 ,"bar"]
",".join(imap(str, l))