我正在阅读Python xml.etree.ElementTree模块(https://github.com/python/cpython/blob/master/Lib/xml/etree/ElementTree.py)的源代码,我偶然发现了一个有趣的切片用法。作者写了以下代码:
prefix = text[:1]
据我所知,这与:
try:
prefix = text[0]
except IndexError:
prefix = text
这些代码片段是否完全相同?使用[:1]代替[0]有什么好处和不利?
另一个区别:如果text[0]
是一个空列表,text
会导致异常,而text[:1]
会返回一个空列表。类似地,索引空字符串将为您提供异常,而切片返回空字符串。
区别在于输出格式:
a[:1]
返回包含第一个元素的列表。而a[0]
返回第一个元素。
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[:1]
[1]
>>> a[0]
1
切片 - [:1] - 返回一个列表,而[0]返回一个原子。
如果您的问题仅限于字符串用法,那么是 - 它们是相同的。您可以从更少的代码中受益,但第二个代码段更具有pythonic和显式。