所以我想知道将列表变成字符串的最“pythonic”方式是什么。
例如:
string_list = ['h', 'e', 'l', 'l', 'o']
# to the string
string = 'hello'
我一直在使用''.join(string_list)
方法,但只是感觉接近不可读和迂回的方法来做这么简单的事情。
有更好的方法还是我过于复杂?
答案 0 :(得分:5)
不,这是做pythonic的方法。
也许你觉得它应该是:string_list.join('')
。你是not alone。
可能最重要的优势是,这使.join()
能够使用可迭代的任何。
如果它相反,每个集合都需要自己实现join()
方法。如果您要创建自己的集合,是否会添加.join()
方法?可能不是。
它是str
类的方法,这意味着始终工作。没有惊喜。有关join()
以及Flask
作者Armin Ronacher的其他信息,请参阅Python and the principle of least astonishment。{/ p>
可以对len()
函数/运算符进行类似的论证,可以在上述文章的开头找到。
答案 1 :(得分:4)
使用''.join(string_list)
。请注意,list
命名为内置类型,因此不应将其用于变量名称。由于Python字符串是不可变的,因此无论如何都需要构造一个新的字符串。 ''.join(s)
是在Python中执行此操作的规范且有效的方法。
答案 2 :(得分:2)
我认为你过度复杂了。这是来自python本身:
>>> list = ['h', 'e', 'l', 'l', 'o']
>>> sum(list, '')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]
因此,python的建议是使用''.join
。