从一个序列中连接字符串,使每两个连续的对之间添加一个逗号,您的首选方法是什么?也就是说,你如何映射,例如,['a', 'b', 'c']到'a,b,c'?(case ['s']和[]应该分别映射为's'和''。)

我通常会用“。”Join (map(lambda x: x+',',l))[:-1],但也感到有些不满意。


当前回答

@jmanning2k使用列表推导的缺点是创建一个新的临时列表。更好的解决方案是使用itertools。Imap返回一个迭代器

from itertools import imap
l = [1, "foo", 4 ,"bar"]
",".join(imap(str, l))

其他回答

my_list = ['a', 'b', 'c', 'd']
my_string = ','.join(my_list)
'a,b,c,d'

如果列表包含整数,这将不起作用


如果列表包含非字符串类型(如整数、浮点数、bool、None),则执行以下操作:

my_string = ','.join(map(str, my_list)) 
>>> my_list = ['A', '', '', 'D', 'E',]
>>> ",".join([str(i) for i in my_list if i])
'A,D,E'

My_list可以包含任何类型的变量。这样就避免了“A…D,E”的结果。

下面是一个带有列表的例子

>>> 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

下面是Python 3.0中允许非字符串列表项的替代解决方案:

>>> alist = ['a', 1, (2, 'b')]

标准方式 >>> ", "。加入(地图(str,倾斜的)) a, 1, (2, 'b') 替代解决方案 >>>导入IO >>> s = io.StringIO() >>> print(*alist, file=s, sep=', ', end= ") > > > s.getvalue () a, 1, (2, 'b')

注意:逗号后的空格是有意的。

@jmanning2k使用列表推导的缺点是创建一个新的临时列表。更好的解决方案是使用itertools。Imap返回一个迭代器

from itertools import imap
l = [1, "foo", 4 ,"bar"]
",".join(imap(str, l))