len("".split(" ")) == 1
显示True的pythonic解释是什么?
为什么"".split("")
会产生['']
>>> len("".split(" "))
1
>>> "".split(" ")
['']
答案 0 :(得分:20)
str.split(sep)
返回至少一个元素。如果在文本中找不到 sep ,那么该元素就是原始的未分割文本。
对于空字符串,当然永远不会找到 sep 分隔符,并且在文档中特别指出:
使用指定的分隔符拆分空字符串将返回
['']
。
您可能会对None
分隔符选项(默认值)的行为感到困惑:
如果未指定 sep 或
None
,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,结果将不包含空字符串如果字符串具有前导或尾随空格,则为开始或结束。 因此,将空字符串或仅包含空格的字符串与None
分隔符分开会返回[]
。
(强调我的)。这使str.split(None)
成为例外,而不是规则。
答案 1 :(得分:4)
[]的长度为零。如果列表中包含任何内容,那么任何内容都会包含 长度> = 1。在这种情况下,['']中有一个元素:空字符串。所以它给了一个。
答案 2 :(得分:2)
这可能是相关的:
Why are empty strings returned in split() results?
split()旨在与join()和:
相反" ".join([""]) == ""
答案 3 :(得分:0)
它告诉你生成的列表的长度,而不是字符串的长度。