Можно ли использовать [: 1] вместо [0]? - PullRequest
0 голосов
/ 19 марта 2019

Я читал исходный код модуля 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 ]

2 голосов
/ 19 марта 2019

Разница в формате вывода:

a[:1] возвращает список с первым элементом. Пока a[0] возвращает первый элемент.

>>> a = [1, 2, 3, 4, 5, 6]
>>> a[:1]
[1]
>>> a[0]
1
1 голос
/ 19 марта 2019

Еще одно отличие: text[0] приводит к исключению, если text представляет собой пустой список, а text[:1] возвращает пустой список.Аналогично, индексирование пустой строки даст вам исключение, а нарезка вернет пустую строку.

0 голосов
/ 19 марта 2019

Если ваш вопрос ограничен только использованием строк, то да - они идентичны.Вы получаете выгоду от меньшего количества кода, но второй фрагмент является более питонным и явным.

0 голосов
/ 19 марта 2019

Slices - [: 1] - возвращает список, тогда как [0] возвращает атом.

...