我想知道将列表转换为字符串的最“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)
方法,但感觉这种做法过于繁琐,不够简洁明了。不,这是使用Python的方式。
也许你认为应该这样写:string_list.join('')
。你并不孤单。
最重要的优点可能是,这使得.join()
可以与任何可迭代对象一起使用。
如果反过来,每个集合都需要自己实现一个join()
方法。如果你要创建自己的集合,你会添加一个.join()
方法吗?可能不会。
它作为str
类的一个方法的事实意味着它将始终有效。没有什么惊喜。在此处阅读 Python和最小惊讶原则了解join()
和其他由Flask
作者Armin Ronacher提出的问题。
对于在上述文章开头找到的len()
函数/运算符,可以提出类似的论点。
使用''.join(string_list)
。请注意,list
是一个内置类型的名称,因此不应将其用作变量名。由于Python字符串是不可变的,因此您需要构造一个新字符串。在Python中,''.join(s)
是规范且高效的方法。
+
方法会创建 n
个临时副本。而 str.join
方法会在单次预处理中保留所需的空间。因此,.join
方法将在非平凡情况下优于简单的 +
运算符,特别是在有许多字符串需要连接的情况下。 - Preet Kukreti.join()
字符串方法实际上是 Python 中组装多部分字符串最有效的方法。字符串相加很慢,因为它会创建许多字符串:首先它创建 s[0]+''
,然后将 s[1]
添加到该结果字符串中以创建另一个字符串。.join()
只创建一个字符串。 - Andrew Gorcester+
运算符重载的简单扩展和处理方式所致。 - Preet KukretiPy_MEMCPY(p, sep, seplen);
在 ''.join
的情况下会对长度为0的 seplen 进行 memcpy,因此实际上不会复制任何内容。 - jamylak我认为你过于复杂化了。以下是来自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]
''.join
。
''.join(list)
是一种非常具有Python风格的方式,您是在寻求更高效的方法吗? - Inbar Rose