.jpg)
这一直让我感到困惑。似乎这样会更好:
["Hello", "world"].join("-")
比这个:
"-".join(["Hello", "world"])
有没有具体的原因?

网友回答:
这在字符串方法中讨论过…最后在 Python-Dev 实现中线程,并被 Guido 接受。该线程始于 1999 年 1 月,并包含在 6 年 2000 月发布的 Python 2.0 中(并支持 Unicode)。Python 2000.<>(支持的方法包括)于<>年<>月发布。str.joinstrjoin
str.join(seq)seq.join(str)seq.reduce(str)join作为内置函数listtupleseq.reduce(str)对于新人来说很难。seq.join(str)引入了从序列到 str/unicode 的意外依赖关系。join()作为独立的内置函数,它仅支持特定的数据类型。因此,使用内置命名空间并不好。如果要支持许多数据类型,则创建优化的实现将很困难:如果使用该方法实现,则它将是O(n²)。join()__add__sep以下是一些其他想法(我自己和我朋友的想法):
iterable圭多的决定记录在历史邮件中,决定:str.join(seq)
有趣,但它看起来确实正确!巴里,去吧…
圭多·范·罗苏姆

网友回答:
这是因为任何可迭代对象都可以连接(例如,列表,元组,字典,集合),但其内容和“连接器”必须是字符串。
例如:
'_'.join(['welcome', 'to', 'stack', 'overflow'])
'_'.join(('welcome', 'to', 'stack', 'overflow'))
'welcome_to_stack_overflow'
使用字符串以外的内容将引发以下错误:
类型错误:序列项 0:预期的 str 实例,找到 int

网友回答:
因为该方法位于字符串类中,而不是列表类中。join()
请参阅 http://www.faqs.org/docs/diveintopython/odbchelper_join.html:
历史笔记。当我第一次学习
Python 时,我希望 join 是一个列表的方法
,它将
分隔符作为参数。很多人
都有同样的感觉,加入方法背后有一个
故事。在 Python 1.6 之前
,字符串没有所有这些
有用的方法。有一个
单独的字符串模块,其中包含
所有字符串函数;每个
函数都采用一个字符串作为其第一个
参数。这些函数被认为
足够重要,可以放在
字符串本身上,这对于下部、上部和
拆分等函数是有意义的
。但是许多核心的Python
程序员反对新的join
方法,认为它应该是列表
的方法,或者它
根本不应该移动,而只是保留
旧字符串模块的一部分(它
仍然有很多有用的东西)。
我只使用新的join方法,但你会看到代码以任何
一种方式编写,如果它真的困扰你,
你可以
改用旧的string.join函数
。— Mark Pilgrim, Dive into Python
模板简介:该模板名称为【为什么是string.join(list)而不是list.join(string)?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。