Тизмелер – Кесимдер(списки-срезы)
Тизмелер – Кесимдер(списки-срезы)
Элементти индекс боюнча алыңыз
Башка программалоо тилдериндегидей эле, биз индексти алабыз:
@A@a = [1, 3, 9, 8]
a[0]
//1
a[3]
//8
a[4]@A@
@E@Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
a[4]
IndexError: list index out of range@E@
Көптөгөн башка тилдердегидей эле, элементти номерлөө нөлдөн башталат. Болбогон индекске кирүүгө аракет IndexError өзгөчөлүгүн жаратат.
Бул мисалда a өзгөрмө тизмеси болгон, бирок сиз башка типтерден индекс боюнча элементти ала аласыз: саптар, кортеждер.
Python ошондой эле терс индекстерди колдойт, номерлөө төмөнкүдөй аяктайт:
@A@a = [1, 3, 9, 8]
a[-1]
//8
a[-4]
//1
a[-5]@A@
@E@Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
a[-5]
IndexError: list index out of range@E@
Кесимдер
Pythonдо индекстерден тышкары кесимдер да бар.
item[START:STOP:STEP] - STEP кадамы менен START номеринен STOP (аны кошпогондо) чейин кесим алат. Демейки боюнча, START = 0, STOP = объекттин узундугу, STEP = 1. Демек, кээ бир (жана, балким, бардык) параметрлерди өткөрүп жиберүүгө болот.
@A@a = [2,5,4,2,5,6,10]
a[:]
// [2, 5, 4, 2, 5, 6, 10]
a[1:]
// [5, 4, 2, 5, 6, 10]
a[:3]
// [2, 5, 4]
a[::2]
// [2, 4, 5, 10]@A@
Ошондой эле, бардык бул параметрлер терс болушу мүмкүн:
@A@a = [1, 3, 8, 7]
a[::-1]
// [7, 8, 3, 1]
a[:-2]
// [1, 3]
a[-2::-1]
// [8, 3, 1]
a[1:4:-1]
[]@A@
Акыркы мисалда тизме бош, анткени START < STOP жана STEP терс.
Эгерде маанилердин диапазону объекттен тышкары болсо, ушундай болот:
@A@a = [1, 3, 8, 7]
a[10:20]
// []@A@
Ошондой эле, кесимдерди колдонуу менен элементтерди гана чыгарбастан, элементтерди кошуп жана алып салсаңыз болот (албетте, өзгөрүлүүчү ырааттуулук үчүн гана).
@A@a = [1, 3, 8, 7]
a[1:3] = [0, 0, 0]
a
// [1, 0, 0, 0, 7]
del a[:-3]
a
// [0, 0, 7]@A@