Python连接列表

时间:2012-08-15 10:12:45

标签: python string list

我是python的新手,这只是为了在我的电脑上实现自动化。我想连接列表中的所有项目。问题是

''.join(list)

不起作用,因为它不是字符串列表。

此网站http://www.skymind.com/~ocrow/python_string/表示最有效的方法是

''.join([`num` for num in xrange(loop_count)])

但这不是有效的python ...

有人可以解释在string.join()中包含这种循环的正确语法吗?

4 个答案:

答案 0 :(得分:15)

您需要使用str() constructor

将列表中的所有内容转换为字符串
''.join(str(elem) for elem in lst)

请注意,将list用于变量名称通常不是一个好主意,它会影响内置的list构造函数。

我在那里使用了一个生成器表达式,在列表中的每个元素上应用str()构造函数。另一种方法是使用map() function

''.join(map(str, lst))

示例中的反引号是另一种在值上调用repr()的拼写,与str()略有不同;你可能想要后者。因为它违反了"There should be one-- and preferably only one --obvious way to do it."的Python原则,所以从Python 3中删除了反引号语法。

答案 1 :(得分:5)

这是另一种方式(讨论是关于Python 2.x):

''.join(map(str, my_list))

此解决方案将具有最快的性能,它看起来很漂亮和简单。使用发电机效率不会更高。实际上这会更有效,因为''.join必须根据元素的长度为字符串分配精确的内存量,因此无论如何它都需要在创建字符串之前使用整个生成器。

请注意,{3}已删除``并且不再使用它,如果必须使用str()则更明确。 str(num)

答案 2 :(得分:2)

只需使用此功能,无需[]并使用str(num)

''.join(str(num) for num in xrange(loop_count))  

列表只需将xrange(loop_count)替换为列表名称。

示例:

   >>> ''.join(str(num) for num in xrange(10)) #use range() in python 3.x
    '0123456789'

答案 3 :(得分:2)

如果你的Python太老了,那么#34; list comprehensions" (奇数[x for x in ...]语法),使用map()

 ''.join(map(str, list))