Python连接列表

Jor*_*ame 12 python string list

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

''.join(list)
Run Code Online (Sandbox Code Playgroud)

不会工作,因为它不是字符串列表.

这个网站http://www.skymind.com/~ocrow/python_string/说最有效的方法是

''.join([`num` for num in xrange(loop_count)])
Run Code Online (Sandbox Code Playgroud)

但这不是有效的python ...

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

Mar*_*ers 15

您需要使用str()构造函数将列表中的所有内容转换为字符串:

''.join(str(elem) for elem in lst)
Run Code Online (Sandbox Code Playgroud)

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

我在那里使用了一个生成器表达式来str()对列表中的每个元素应用构造函数.另一种方法是使用该map()功能:

''.join(map(str, lst))
Run Code Online (Sandbox Code Playgroud)

你的例子中的反引号是另一种调用repr()值的拼写,这与...略有不同str(); 你可能想要后者.因为它违反了Python的原则:"应该有一个 - 最好只有一个 - 显而易见的方法".,反引号语法已从Python 3中删除.


jam*_*lak 6

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

''.join(map(str, my_list))
Run Code Online (Sandbox Code Playgroud)

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

请注意,``已经在Python 3中删除了它,并且不再使用它是不好的做法,str()如果必须使用,请更明确地使用它.str(num).


Ash*_*ary 2

只需使用这个,不需要[]和使用str(num)

''.join(str(num) for num in xrange(loop_count))  
Run Code Online (Sandbox Code Playgroud)

对于列表,只需替换xrange(loop_count)为列表名称。

例子:

   >>> ''.join(str(num) for num in xrange(10)) #use range() in python 3.x
    '0123456789'
Run Code Online (Sandbox Code Playgroud)