Нарязване -› не знам какво прави -len

може ли някой да обясни как изходът е 'b' за a[-len(a)]?

a = "blueberry"
>>> a[-len(a)]
'b'

person SQL_rookie    schedule 24.12.2014    source източник
comment
Това е достъп до елемент, а не нарязване.   -  person Ignacio Vazquez-Abrams    schedule 24.12.2014
comment
Разбирате ли как работят отрицателните индекси като цяло? Ако не, вижте урока за Python.   -  person BrenBarn    schedule 24.12.2014


Отговори (3)


Ако отрицателно число се използва като индекс, вътрешно към него се добавя дължината на последователността и след това резултатът се използва като индекс.

И така, какво се случва е:

a[-len(a)]
a[len(a)-len(a)]
a[0]

което е b.

person Aran-Fey    schedule 24.12.2014

Отрицателните индекси се броят от последния елемент, започвайки от -1, и продължават към началото. Следователно една последователност от 3 елемента има дължина 3, а -3 е индексът на първия елемент.

person Ignacio Vazquez-Abrams    schedule 24.12.2014

Погледнете документацията на python, можете да използвате -len(), за да посочите първия символ:

 +---+---+---+---+---+---+
 | P | y | t | h | o | n |
 +---+---+---+---+---+---+
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1
person Pegerto    schedule 24.12.2014
comment
изображението ви не е правилно, няма 6-ти индекс в този низ, дължината на низа е 6 - person midori; 24.12.2014
comment
Съгласен съм, че индексирането ще се провали, тази схема е от документа на Python и е доста визуална, за да разберете индексирането и отрицателното индексиране. 6 е там като референция, а 0 и -0 ще бъдат първият елемент. - person Pegerto; 24.12.2014
comment
Коментарът на @BallPython пропуска факта, че числата са между елементи, а не точно под тях. Тази визуализация е много полезна за разбирането как работят диапазоните в Python (например a[1:5]) - person jez; 24.12.2014