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

问题描述 投票:0回答:4

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

python python-3.x indexing slice
4个回答
1
投票

另一个区别:如果text[0]是一个空列表,text会导致异常,而text[:1]会返回一个空列表。类似地,索引空字符串将为您提供异常,而切片返回空字符串。


2
投票

区别在于输出格式:

a[:1]返回包含第一个元素的列表。而a[0]返回第一个元素。

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[:1]
[1]
>>> a[0]
1

0
投票

切片 - [:1] - 返回一个列表,而[0]返回一个原子。


0
投票

如果您的问题仅限于字符串用法,那么是 - 它们是相同的。您可以从更少的代码中受益,但第二个代码段更具有pythonic和显式。

© www.soinside.com 2019 - 2024. All rights reserved.