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中删除.
这是另一种方式(讨论是关于Python 2.x):
''.join(map(str, my_list))
Run Code Online (Sandbox Code Playgroud)
这个解决方案将具有最快的性能,它看起来很漂亮和简单.使用发电机效率不会更高.实际上这将更有效,因为''.join必须根据元素的长度为字符串分配精确的内存量,因此在创建字符串之前需要使用整个生成器.
请注意,``已经在Python 3中删除了它,并且不再使用它是不好的做法,str()如果必须使用,请更明确地使用它.str(num).
只需使用这个,不需要[]和使用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)
| 归档时间: |
|
| 查看次数: |
31260 次 |
| 最近记录: |