3

所以我想知道将列表转换为字符串的最“pythonic”方式是什么。

例如:

string_list = ['h', 'e', 'l', 'l', 'o']
# to the string
string = 'hello'

我一直在使用这种''.join(string_list)方法,但感觉做这么简单的事情几乎是不可读和迂回的方法。

有没有更好的方法,还是我过于复杂了?

4

3 回答 3

5

不,这是pythonic的方式。

也许你觉得它应该是:string_list.join(''). 你并不孤单

可能最重要的优势是,这使得 .join()可以使用任何可迭代的东西。

如果反过来,每个集合都需要自己实现一个join()方法。如果你要创建自己的集合,你会添加一个.join()方法吗?可能不是。

它是str类的方法这一事实意味着它将始终有效。没有惊喜。阅读这里关于Python和作者 Armin Ronacher的最小惊讶原则join()和其他内容。Flask

可以对len()函数/运算符进行类似的论证,可以在上述文章的开头找到。

于 2012-08-05T13:21:04.727 回答
4

使用''.join(string_list). 请注意,list命名为内置类型,因此不应将其用于变量名称。由于 Python 字符串是不可变的,因此无论如何都需要构造一个新字符串。''.join(s)是在 Python 中执行此操作的规范且有效的方法。

于 2012-08-05T13:11:54.160 回答
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.

于 2012-08-05T13:09:35.543 回答