Найти - Пользователи
Полная версия: Логика slice
Начало » Python для новичков » Логика slice
1 2
vanvanov
Объясните, пожалуйста, эту логику.
>>> line='поляна'
>>> line[1:4]
'оля'
Если мы берем левую границу, то для “о” получаем 1, что и логично, потому что отсчет ведется с 0. Однако, чтобы правая граница захватила “я”, нужно писать 4, а не 3. Это нелогично, и вызывает излишние трудности, когда в правой границе у меня переменная, обозначающая номер символа, с которым надо работать.
terabayt
эт из-за len
если бы было “логично”, то нужно былобы писать не
>>> line = "qwerty"
>>> len(line)
6
>>> line[0:len(line)]
'qwerty'
>>> 
а
>>> line[0:len(line)-1]
'qwerty'
>>> 
вы привыкните
Budulianin
terabayt
эт из-за len
Бред пишешь.
>>> line[0:len(line)-1]
'qwert'

[b]vanvanov[/b]

vanvanov
Прочитай хотя бы один раз tutorial, там про slice написано.
terabayt
Budulianin
После того как обинил кого-то в неправоте, нужно высказать свой вариант.
Я точно помню что где-то об этом читал.
Budulianin
terabayt
Я точно помню что где-то об этом читал.
>>> line[0:len(line)-1]
'qwerty'
Это ты тоже вычитал?
terabayt
ахаха, я понял! а может ты прочитаешь то что написано перед кодом?!
Budulianin
terabayt
ахаха, я понял! а может ты прочитаешь то что написано перед кодом?!
Подлец, приглашение ввода в оболочке путает.
py.user.next
vanvanov
Это нелогично, и вызывает излишние трудности
vanvanov
line[1:4]
4 - 1 = 3
Фактически, так и думаешь, когд делаешь их. Если нужно три символа взять, то ищёшь только первый индекс, а второй индекс просто вычисляешь.
vanvanov
py.user.next
4 - 1 = 3
Фактически, так и думаешь, когд делаешь их.
Ну не знаю, лично я так не думаю. Если числа указываются включительно, то
line[1:4]
должно быть эквивалентно
line[1]+line[2]+line[3]+line[4]
. Если не включительно, то
line[2]+line[3]
. А когда 1-я скобка - включительно, 2-я - нет, это ерунда какая-то.
py.user.next
Ну, к примеру, сколько элементов в срезе
s[150:158]
?
Ответ - 8, почему? Потому что 158 - 150 = 8. Если же ты будешь по-своему вычислять, то это будет 158 - 150 = 8, а потом 8 + 1 = 9.

vanvanov
А когда 1-я скобка - включительно, 2-я - нет, это ерунда какая-то.
Когда имеешь дело со срезом, то надо знать, где он начинается и сколько в нём элементов. То есть индексы его элементов не нужно знать, потому что в результате получается новый набор индексов.
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