我是 python 新手,这只是为了在我的 PC 上自动化一些东西。我想连接列表中的所有项目。问题是
''.join(list)
不起作用,因为它不是字符串列表。
这个网站http://www.skymind.com/~ocrow/python_string/说最有效的方法是
''.join([`num` for num in xrange(loop_count)])
但这不是有效的python ...
有人可以解释在 string.join() 中包含这种循环的正确语法吗?
我是 python 新手,这只是为了在我的 PC 上自动化一些东西。我想连接列表中的所有项目。问题是
''.join(list)
不起作用,因为它不是字符串列表。
这个网站http://www.skymind.com/~ocrow/python_string/说最有效的方法是
''.join([`num` for num in xrange(loop_count)])
但这不是有效的python ...
有人可以解释在 string.join() 中包含这种循环的正确语法吗?
您需要使用str()构造函数将列表中的所有内容转换为字符串:
''.join(str(elem) for elem in lst)
请注意,使用list变量名通常不是一个好主意,它会隐藏内置list构造函数。
我在那里使用了一个生成器表达式来将str()构造函数应用于列表中的每个元素。另一种方法是使用map()函数:
''.join(map(str, lst))
您示例中的反引号是调用repr()值的另一种拼写,与 ; 略有不同str()。你可能想要后者。因为它违反了 Python 的“应该有一种——最好只有一种——明显的方式来做到这一点”的原则。,反引号语法已从 Python 3 中删除。
这是另一种方式(讨论是关于 Python 2.x):
''.join(map(str, my_list))
该解决方案将具有最快的性能,并且看起来不错且简单 imo。使用生成器不会更有效。实际上,这会更有效,因为''.join必须根据元素的长度为字符串分配确切的内存量,因此无论如何在创建字符串之前都需要消耗整个生成器。
请注意,``它已在 Python 3 中删除,不再使用它不是一个好习惯,str()如果必须使用,请使用更明确。str(num).
只需使用它,不需要[]和使用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'
[x for x in ...]如果您的 Python 对于“列表推导”(奇怪的语法)来说太旧了,请使用map():
''.join(map(str, list))