Python 3(标准实现)是否保证以下代码始终生成字符串
如果是,那么这个功能(保持顺序)在哪里有文档记录?
如果不是,有什么函数可以用来实现保持顺序的连接?
2, 3, 1
?', '.join(['2', '3', '1'])
如果是,那么这个功能(保持顺序)在哪里有文档记录?
如果不是,有什么函数可以用来实现保持顺序的连接?
2, 3, 1
?', '.join(['2', '3', '1'])
str.join()
方法按照传入的序列中字符串的顺序连接字符串。
由于您传入的是一个列表,并且列表有固定的顺序,因此您的示例总是以相同的顺序产生字符串输出,是的。
经验法则:如果顺序会有任何不同的处理方式,str.join()
文档将明确提到这一点。不按可迭代对象提供的顺序连接字符串将是...非常令人惊讶的,更不用说没有多大用处了。
join()
的实现无关。如果join()
的作者足够疯狂,他可以将join()
实现为类似于for item in reverse(LIST): item = item + ', '; return item
的形式。 - Not an IDstr.join()
函数违反了这种期望,那么它的使用有什么意义呢? - Martijn Pieters"""这可以按任何顺序连接项目。我们当时在想什么?!#哈哈"""
)。如果你传递一个set
之类的对象,可能无法获得预期的顺序,但是对于一个序列而言,顺序肯定会被保留。 - jonrsharpeset
- 那么连接操作是无序的,即set_1 == set_2
不能保证'.'join(set_1) == '.'join(set_2)
。 - Mortz