我是python的新手,这只是为了在我的电脑上实现自动化。我想连接列表中的所有项目。问题是
''.join(list)
不起作用,因为它不是字符串列表。
此网站http://www.skymind.com/~ocrow/python_string/表示最有效的方法是
''.join([`num` for num in xrange(loop_count)])
但这不是有效的python ...
有人可以解释在string.join()中包含这种循环的正确语法吗?
答案 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))