我正在阅读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]有什么好处和弊端?
答案 0 :(得分:2)
区别在于输出格式:
a[:1]
返回带有第一个元素的列表。 a[0]
返回第一个元素。
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[:1]
[1]
>>> a[0]
1
答案 1 :(得分:1)
另一个区别:如果text[0]
是一个空列表,而text
返回一个空列表,则text[:1]
会导致异常。同样,索引空字符串会给您一个例外,而切片会返回一个空字符串。
答案 2 :(得分:0)
切片-[:1]-返回一个列表,而[0]返回一个原子。
答案 3 :(得分:0)
如果您的问题仅受字符串用法的限制,那么可以-它们是相同的。您可以从更少的代码中受益,但是第二个代码段则更加Python化和显式。