从一个序列中连接字符串,使每两个连续的对之间添加一个逗号,您的首选方法是什么?也就是说,你如何映射,例如,['a', 'b', 'c']到'a,b,c'?(case ['s']和[]应该分别映射为's'和''。)
我通常会用“。”Join (map(lambda x: x+',',l))[:-1],但也感到有些不满意。
从一个序列中连接字符串,使每两个连续的对之间添加一个逗号,您的首选方法是什么?也就是说,你如何映射,例如,['a', 'b', 'c']到'a,b,c'?(case ['s']和[]应该分别映射为's'和''。)
我通常会用“。”Join (map(lambda x: x+',',l))[:-1],但也感到有些不满意。
当前回答
@Peter霍夫曼
使用生成器表达式也有产生迭代器的好处,但节省了导入itertools。此外,列表推导式通常优先于映射,因此,我希望生成器表达式优先于imap。
>>> l = [1, "foo", 4 ,"bar"]
>>> ",".join(str(bit) for bit in l)
'1,foo,4,bar'
其他回答
l=['a', 1, 'b', 2]
print str(l)[1:-1]
Output: "'a', 1, 'b', 2"
my_list = ['a', 'b', 'c', 'd']
my_string = ','.join(my_list)
'a,b,c,d'
如果列表包含整数,这将不起作用
如果列表包含非字符串类型(如整数、浮点数、bool、None),则执行以下操作:
my_string = ','.join(map(str, my_list))
难道你不想:
",".join(l)
显然,如果你需要在值中引用/转义逗号等,它会变得更复杂。在这种情况下,我建议查看标准库中的csv模块:
https://docs.python.org/library/csv.html
下面是一个带有列表的例子
>>> myList = [['Apple'],['Orange']]
>>> myList = ','.join(map(str, [i[0] for i in myList]))
>>> print "Output:", myList
Output: Apple,Orange
更准确:
>>> myList = [['Apple'],['Orange']]
>>> myList = ','.join(map(str, [type(i) == list and i[0] for i in myList]))
>>> print "Output:", myList
Output: Apple,Orange
示例2:
myList = ['Apple','Orange']
myList = ','.join(map(str, myList))
print "Output:", myList
Output: Apple,Orange
除非我遗漏了什么,','.join(foo)应该做你所要求的。
>>> ','.join([''])
''
>>> ','.join(['s'])
's'
>>> ','.join(['a','b','c'])
'a,b,c'
(编辑:正如jmanning2k指出的那样,
','.join([str(x) for x in foo])
更安全,而且相当python化,尽管如果元素可以包含逗号,则结果字符串将难以解析——在这一点上,您需要csv模块的全部功能,Douglas在他的回答中指出。)