这一直让我感到困惑。看起来这样会更好:
["Hello", "world"].join("-")
比这个:
"-".join(["Hello", "world"])
有这样的具体原因吗?
原文由 Evan Fosmark 发布,翻译遵循 CC BY-SA 4.0 许可协议
这一直让我感到困惑。看起来这样会更好:
["Hello", "world"].join("-")
比这个:
"-".join(["Hello", "world"])
有这样的具体原因吗?
原文由 Evan Fosmark 发布,翻译遵循 CC BY-SA 4.0 许可协议
这在 String 方法中进行了讨论…最后 线程在 Python-Dev 文件中,并被 Guido 接受。该线程于 1999 年 6 月开始,并且 str.join
包含在 2000 年 9 月发布的 Python 1.6 中(并支持 Unicode)。 Python 2.0(支持 str
方法,包括 join
)于 2000 年 10 月发布。
str.join(seq)
seq.join(str)
seq.reduce(str)
join
作为内置函数list
s 和 tuple
s,而且还支持所有序列/可迭代对象。seq.reduce(str)
对新人来说很难。seq.join(str)
引入了从序列到 str/unicode 的意外依赖。join()
作为一个独立的内置函数将只支持特定的数据类型。所以使用内置的命名空间并不好。如果 join()
支持多种数据类型,创建优化的实现将很困难:如果使用 __add__
方法实现,那么它将是 O(n²)。sep
)。显式优于隐式。这里有一些额外的想法(我自己和我朋友的):
iterable
类(在另一条评论中提到)。Guido 的决定记录在 历史邮件 中,决定 str.join(seq)
:
有趣,但它似乎是正确的!巴里,加油…
圭多·范·罗森
原文由 Yoshiki Shibukawa 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
这是因为可以连接任何可迭代对象(例如,list、tuple、dict、set),但其内容和“joiner” 必须是 字符串。
例如:
使用字符串以外的东西会引发以下错误: