Найти - Пользователи
Полная версия: Срез каких элементов последовательности отображает запись >>> s=("spam") >>> s[:0] ''
Начало » Python для новичков » Срез каких элементов последовательности отображает запись >>> s=("spam") >>> s[:0] ''
1 2
Арртем
Доброго времени суток. Не совсем понятно для каких элементов последовательности этот срез?
>>> s=("spam")
>>> s[:0]
''
1.Почему результат среза s это (пустая строка)
2.Что означает этот результат?

>>> s[0:0]==s[:0]
True
>>> (s[0:0]==s[:0])!=s[0]
True
JOHN_16
>>> s='qwerty'
>>>
>>> s[:0]
''
>>> s[0:0]
''
>>> s[0:1]
'q'
>>> s[0]
'q'
что именно вам не понятно? почему пустой срез в диапазоне элементов “все до нулевого” ? Потому что перед нулевым элементом ничего нет
Арртем
Просто если значение выходит за пределы строки обычно выдается ошибка, например
 s[10]
(в моем примере), но я думал что значение
 s[:0]
то же не входит в предел вышеописанной строки (длинной от 0 до 3) ведь формально это значение -0, а ошибки не было. Поправьте меня пожалуйста.
py.user.next
Арртем
s=("spam")
а что там за скобки ?

Арртем
ведь формально это значение -0
это не -0, а срез с нулевого по нулевой, не включая нулевой
берётся пустая строка, которая есть перед первым символом, между первым и вторым, между вторым и третьим и так далее

>>> s = 'abc'
>>> s[0:0]
''
>>> s[1:1]
''
>>> s[2:2]
''
>>> s[3:len(s)]
''
>>> s[10:len(s)]
''
>>>

исключения нет, потому что это не обращение по целочисленному индексу
>>> s[slice(0, 0)]
''
>>> s[slice(10, 15)]
''
>>> s[slice(0, 3)]
'abc'
>>>
Арртем
Поправьте меня пожалуйста.
Т.е объект
"spam"
состоит из односимвольных строк чередующихся с пустыми строками?
Пользуюсь Марк Лутц 4-е изд. “Изучаем питон”. Если можно укажите ссылку на страницу в книге по данному вопросу что строка состоит из односимвольных строк чередующихся с пустыми строками.
Индексу первой строки (0)в моем примере соответствует “s”.
В срезе
 s[0:0]
второй индекс 0 после двоеточия имеет больший приоритет чем первый индекс 0 до двоеточия, т.к именно он заставляет интерпретатор выводить пустую строку, а не ошибку или другое значение.
FishHook
Арртем
состоит из односимвольных строк чередующихся с пустыми строками
откуда Вы пустые строки выдумали?
4kpt
FishHook
FishHook
откуда Вы пустые строки выдумали?
Мне самому интересно. Только что прочитал.
FishHook
Арртем, тебе же уже сказали, что
s[0:0]
для ЛЮБОГО списка вернет пустой список, а для строки пустую строку, просто потому что это срез от нуля, до нуля, не включая нуля. С тем же успехом можно написать
s[2:1]
, в этот срез не попадет ни один элемент.
4kpt
Арртем
А как Вы тогда поясните это:
>>> str_ = "123"
>>> str_[100:200]
>>> ''

FishHook
Извините, не видел Ваш пост…
alexbadaloff
Арртем
Пользуюсь Марк Лутц 4-е изд. “Изучаем питон”. Если можно укажите ссылку на страницу в книге
Арртем
В срезе
 s[0:0]
второй индекс 0 после двоеточия имеет больший приоритет чем первый индекс 0 до двоеточия, т.к именно он заставляет интерпретатор выводить пустую строку, а не ошибку или другое значение.


Арртем
состоит из односимвольных строк чередующихся с пустыми строками?
И данное утверждение вполне себе истинно, что естественно. Любая величина + пустота = любая величина. Можно проверить:
>>> s = 's'+''+'p'+''+'a'+''+'m'
>>> s
'spam'
Обратное неверно:
>>> list(s)
['s', 'p', 'a', 'm']
Но тут это излишние замуты. Вы своим срезом просто берёте строку длины 0.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB