Python 3中的str.join()方法是否保证顺序?

3
Python 3(标准实现)是否保证以下代码始终生成字符串2, 3, 1
', '.join(['2', '3', '1'])

如果是,那么这个功能(保持顺序)在哪里有文档记录?
如果不是,有什么函数可以用来实现保持顺序的连接?

为什么不呢?列表具有固定的顺序。 - Martijn Pieters
是的,列表有顺序,但这与join()的实现无关。如果join()的作者足够疯狂,他可以将join()实现为类似于for item in reverse(LIST): item = item + ', '; return item的形式。 - Not an ID
不将其添加到文档中吗?如果str.join()函数违反了这种期望,那么它的使用有什么意义呢? - Martijn Pieters
只是想确保一下。 - Not an ID
那将是彻底的疯狂,并且会被坚决拒绝。如果核心功能确实像这样做了某些操作,那么它肯定会有清晰的文档记录("""这可以按任何顺序连接项目。我们当时在想什么?!#哈哈""")。如果你传递一个set之类的对象,可能无法获得预期的顺序,但是对于一个序列而言,顺序肯定会被保留。 - jonrsharpe
如果可迭代对象是一个set - 那么连接操作是无序的,即set_1 == set_2不能保证'.'join(set_1) == '.'join(set_2) - Mortz
1个回答

8

str.join()方法按照传入的序列中字符串的顺序连接字符串。

由于您传入的是一个列表,并且列表有固定的顺序,因此您的示例总是以相同的顺序产生字符串输出,是的。

经验法则:如果顺序会有任何不同的处理方式,str.join()文档将明确提到这一点。不按可迭代对象提供的顺序连接字符串将是...非常令人惊讶的,更不用说没有多大用处了。


是的,当然。我尝试了使用set()和str.join() --> 混乱顺序;使用List() --> 相同顺序。 - John Jang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接