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