可以使用[:1]代替[0]吗?

时间:2019-03-19 20:26:23

标签: python python-3.x indexing slice

我正在阅读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]有什么好处和弊端?

4 个答案:

答案 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化和显式。