所以我想知道将列表转换为字符串的最“pythonic”方式是什么。
例如:
string_list = ['h', 'e', 'l', 'l', 'o']
# to the string
string = 'hello'
我一直在使用这种''.join(string_list)
方法,但感觉做这么简单的事情几乎是不可读和迂回的方法。
有没有更好的方法,还是我过于复杂了?
所以我想知道将列表转换为字符串的最“pythonic”方式是什么。
例如:
string_list = ['h', 'e', 'l', 'l', 'o']
# to the string
string = 'hello'
我一直在使用这种''.join(string_list)
方法,但感觉做这么简单的事情几乎是不可读和迂回的方法。
有没有更好的方法,还是我过于复杂了?
不,这是pythonic的方式。
也许你觉得它应该是:string_list.join('')
. 你并不孤单。
可能最重要的优势是,这使得 .join()
可以使用任何可迭代的东西。
如果反过来,每个集合都需要自己实现一个join()
方法。如果你要创建自己的集合,你会添加一个.join()
方法吗?可能不是。
它是str
类的方法这一事实意味着它将始终有效。没有惊喜。阅读这里关于Python和作者 Armin Ronacher的最小惊讶原则join()
和其他内容。Flask
可以对len()
函数/运算符进行类似的论证,可以在上述文章的开头找到。
使用''.join(string_list)
. 请注意,list
命名为内置类型,因此不应将其用于变量名称。由于 Python 字符串是不可变的,因此无论如何都需要构造一个新字符串。''.join(s)
是在 Python 中执行此操作的规范且有效的方法。
我认为你过于复杂了。这是来自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
.