Ачааллж байна...
Курс 1-д та ner[0] гэж бичээд string-ийн эхний үсгийг, jagsaalt[2] гэж бичээд жагсаалтын гурав дахь элементийг авч сурсан. Тэр бичлэгийг indexing буюу индексээр хандах гэж нэрлэдэг бөгөөд тэр нь танд үргэлж НЭГ ЭЛЕМЕНТ өгдөг. Одоо бид тэр санааг өргөжүүлж, нэг элемент биш бүхэл хэсгийг нэг дор огтолж авах аргыг үзнэ. Түүнийг slicing гэж нэрлэдэг — англиар slice гэдэг нь "зүсэм" гэсэн утгатай, яг л талхнаас зүсэм огтолж авдаг шиг.
Slicing бол Python-ы хамгийн олон ашиглагддаг чадваруудын нэг. Та түүгээр жагсаалтын эхний гурван элементийг, string-ийн сүүлийн дөрвөн үсгийг, эсвэл хоёр дахь элемент бүрийг сонгож авч чадна. Мөн жагсаалтын хуулбар үүсгэх, текстийг эргүүлэх зэрэг гэнэтийн хэрэглээ ч бий. Хамгийн чухал нь: slicing нь list болон string хоёулан дээр ЯГ ИЖИЛ ажилладаг, тиймээс та нэг л дүрэм сурч, хоёр газарт хэрэглэнэ.
Мөн энэ хичээлд нэг гэнэтийн зүйл байна. Курс 1-д та jagsaalt[10] гэж байхгүй индексээр хандаад IndexError гэсэн алдаа авч байсан. Гэтэл slicing нь тийм алдаа ОГТ гаргадаггүй — хязгаараас хэтэрсэн ч чимээгүйхэн боломжтой хэсгийг л буцаадаг. Энэ нь эхэндээ хачирхалтай санагдана, гэхдээ учир шалтгаантай, түүнийг доор тайлбарлана.
Урт талх байна гэж төсөөлье. Indexing бол "гурав дахь зүсмийг надад өгөөч" гэж хэлж байгаа хэрэг — та нэг зүсэм авна. Slicing бол "хоёр дахь зүсмээс эхлээд тав дахь зүсмийн өмнөх хүртэл огтолж өгөөч" гэж хэлж байгаа хэрэг — та бүхэл хэсэг авна.
Энд хамгийн чухал нарийн ялгаа нуугдаж байна: "тав дахь зүсмийн ӨМНӨХ хүртэл." Python-ы slicing нь эхлэлийг ОРУУЛДАГ, төгсгөлийг ОРУУЛДАГГҮЙ. Энэ бол шинэ эхлэгчдийн хамгийн олон эндүүрдэг зүйл бөгөөд та түүнийг эхнээс нь зөв ойлгосон нь дээр.
Яагаад Python ингэж шийдсэн бэ? Учир нь ингэснээр тоо бодоход хялбар болдог. [2:5] гэсэн зүсэм нь яг 5 - 2 = 3 ширхэг элемент өгнө. Хэрэв төгсгөл нь ч бас багтдаг байсан бол 5 - 2 + 1 = 4 гэж бодох хэрэгтэй болох байсан — тэр нэмэлт нэг нь мартагдах эх үүсвэр болно. Мөн [0:3] ба [3:6] гэсэн хоёр зүсэм нь давхцалгүй, цоорхойгүй, цэвэрхэн залгаа болдог. Энэ хоёр давуу тал нь "төгсгөл багтахгүй" гэсэн эхний эвгүй байдлыг нөхөж илүүдэхээр үнэ цэнэтэй.
Хамгийн энгийн зүсмээс эхэлье.
python
tootsuud = [10, 20, 30, 40, 50, 60]
kheseg = tootsuud[1:4]
print(kheseg)Үр дүн:
[20, 30, 40]Гурав дахь мөрийг задалъя. tootsuud[1:4] гэсэн бичлэгт хаалт дотор ХОЁР тоо, хооронд нь цэгтэй таслал байна. Энэ бол slicing-ийн танигдах шинж — цэгтэй таслал байвал зүсэм, байхгүй бол нэг элемент.
Эхний тоо 1 бол start буюу эхлэх байрлал. Тэр байрлал дээрх элемент зүсэмд ОРНО. Index 1 дээр 20 байгаа тул 20 эхний элемент болно.
Хоёр дахь тоо 4 бол stop буюу зогсох байрлал. Тэр байрлал дээрх элемент зүсэмд ОРОХГҮЙ. Index 4 дээр 50 байгаа ч тэр багтаагүй — зүсэм түүнээс ӨМНӨ зогссон.
Тэгэхээр [1:4] нь index 1, 2, 3 дээрх элементүүдийг авч байна: 20, 30, 40. Гурван элемент, яг 4 - 1 = 3 шиг.
Индексүүдийг тод харуулъя:
index: 0 1 2 3 4 5
утга: 10 20 30 40 50 60
↑ ↑ ↑ ↑
start stop (энэ ОРОХГҮЙ)Мөн чухал зүйл: slicing нь ҮРГЭЛЖ ШИНЭ жагсаалт буцаадаг. Анхны tootsuud жагсаалт ямар ч байдлаар өөрчлөгдөөгүй. Хэрэв та print(tootsuud) хийвэл зургаан элемент бүрэн хэвээрээ байх болно.
Slicing-ийн хоёр тоог аль алиныг нь орхиж болно. Орхисон тоо нь "хамгийн эхнээс" эсвэл "хамгийн төгсгөл хүртэл" гэсэн утгатай болдог.
python
tootsuud = [10, 20, 30, 40, 50, 60]
print(tootsuud[:3])
print(tootsuud[3:])
print(tootsuud[:])Үр дүн:
[10, 20, 30]
[40, 50, 60]
[10, 20, 30, 40, 50, 60]Эхний мөр tootsuud[:3] — start орхигдсон. Python түүнийг "эхнээс нь" гэж ойлгож 0 гэж үзнэ. Тэгэхээр [0:3]-тай яг ижил: index 0, 1, 2. Уншихдаа "эхний гурван элемент" гэж унших нь хамгийн байгалийн.
Хоёр дахь мөр tootsuud[3:] — stop орхигдсон. Python түүнийг "төгсгөл хүртэл" гэж ойлгоно. Тэгэхээр index 3-аас эхлээд төгсгөл хүртэл бүх зүйл. Уншихдаа "гурав дахь элементээс цааш" гэж унших нь зөв.
Гурав дахь мөр tootsuud[:] — хоёулаа орхигдсон. Энэ нь бүх жагсаалтыг өгнө. Эхлээд "яагаад ийм зүйл бичих хэрэгтэй юм бэ, tootsuud гэж бичихэд болохгүй гэж үү" гэж бодож магадгүй — тэр асуултын хариулт нь маш чухал бөгөөд түүнийг доор тусад нь үзнэ.
Анзаараарай, эхний хоёр мөрийг нийлүүлбэл анхны жагсаалт бүрэн буцаж гарна: [:3] нь эхний гурав, [3:] нь үлдсэн гурав. Давхцал алга, цоорхой алга. Энэ бол "stop багтахгүй" гэсэн дүрмийн шууд ашиг тус — та жагсаалтыг ямар ч цэг дээр цэвэрхэн хоёр хуваахад ижил тоог хоёр удаа бичихэд л хангалттай.
Курс 1-д та ner[-1] гэж бичээд сүүлийн үсгийг авч байсан байх. Тэр санаа slicing-д ч ажиллана. Сөрөг тоо нь төгсгөлөөс тоолно.
python
tootsuud = [10, 20, 30, 40, 50, 60]
print(tootsuud[-3:])
print(tootsuud[:-2])
print(tootsuud[-4:-1])Үр дүн:
[40, 50, 60]
[10, 20, 30, 40]
[20, 30, 40]Сөрөг индексийн зурагласан байдал:
эерэг index: 0 1 2 3 4 5
утга: 10 20 30 40 50 60
сөрөг index: -6 -5 -4 -3 -2 -1Анзаараарай: сөрөг тоо -1-ээс эхэлдэг, -0 гэж байхгүй (учир нь -0 бол 0-тэй ижил).
Эхний мөр tootsuud[-3:] — "төгсгөлөөс гурав дахь элементээс эхлээд төгсгөл хүртэл." Өөрөөр хэлбэл сүүлийн гурван элемент. Энэ бол маш түгээмэл бичлэг: "сүүлийн N ширхэгийг ав" гэсэн санааг илэрхийлэх стандарт арга.
Хоёр дахь мөр tootsuud[:-2] — "эхнээс эхлээд төгсгөлөөс хоёр дахь элементийн ӨМНӨХ хүртэл." Өөрөөр хэлбэл сүүлийн хоёроос бусад бүх зүйл. Энэ нь "сүүлийн хэдэн элементийг таслах" санааг илэрхийлдэг.
Гурав дахь мөр tootsuud[-4:-1] — эхлэл ба төгсгөл хоёулаа сөрөг. Дүрэм өөрчлөгдөөгүй: -4 (index 2 дээрх 30... үгүй, -4 нь 20... сайн харъя) — -4 нь 20? Зурагт -4 нь 30-ийн доор биш, -4 нь index 2 буюу 30 гэж харагдаж байна. Гэхдээ үр дүн нь [20, 30, 40] байна.
Эндээс би удаашруулъя, учир нь энд эргэлзэх боломжтой. Зургийг дахин анхааралтай уншъя:
эерэг index: 0 1 2 3 4 5
утга: 10 20 30 40 50 60
сөрөг index: -6 -5 -4 -3 -2 -1-6 → 10, -5 → 20, -4 → 30, -3 → 40, -2 → 50, -1 → 60.
Тэгэхээр [-4:-1] нь -4 (буюу 30) -аас эхлээд -1 (буюу 60) -ийн ӨМНӨХ хүртэл: 30, 40, 50. Тэгэхээр зөв үр дүн нь:
[30, 40, 50]Дээр би [20, 30, 40] гэж бичсэн нь алдаа байлаа — сөрөг индексээр тоолоход хүн бүр яг ийм алдаа гаргадаг гэдгийг харуулах сайн жишээ болов. Зөв аргачлал нь: сөрөг тоог тааварлахын оронд, -4 гэдэг нь "сүүлээс дөрөв дэх" гэдгийг зурагт нь заавал шалгах. Тиймээс код бичихдээ эргэлзвэл богино жагсаалт дээр туршиж хараарай — таамаглахаас хамаагүй хурдан.
Slicing-д ГУРАВ дахь тоо байж болно. Түүнийг step буюу алхам гэж нэрлэдэг ба бичлэг нь [start:stop:step] болно.
python
tootsuud = [10, 20, 30, 40, 50, 60]
print(tootsuud[::2])
print(tootsuud[1::2])
print(tootsuud[::3])Үр дүн:
[10, 30, 50]
[20, 40, 60]
[10, 40]Эхний мөр tootsuud[::2] — start орхигдсон (эхнээс), stop орхигдсон (төгсгөл хүртэл), step нь 2. Step 2 гэдэг нь "нэг элемент авч, нэгийг алгасаж, дахин ав" гэсэн үг. Тэгэхээр index 0, 2, 4 дээрх элементүүд: 10, 30, 50. Уншихдаа "нэг дамжуулж авах" гэж унших нь зөв.
Хоёр дахь мөр tootsuud[1::2] — index 1-ээс эхлээд нэг дамжуулж. Тэгэхээр index 1, 3, 5: 20, 40, 60. Эхний хоёр мөрийг нийлүүлбэл бүх элемент гарна — нэг нь тэгш индекстэй, нөгөө нь сондгой индекстэй.
Гурав дахь мөр tootsuud[::3] — гурван алхмаар. Index 0, 3: 10, 40. Дараагийн нь index 6 байх ёстой ч жагсаалт дуусчихсан тул зогссон.
Step-ийг анхдагчаар 1 гэж үздэг тул [1:4] ба [1:4:1] хоёр яг ижил утгатай.
Хамгийн гайхалтай зүйл: step нь СӨРӨГ байж болно. Тэр үед Python нь жагсаалтыг УРВУУ чиглэлд явна.
python
tootsuud = [10, 20, 30, 40, 50, 60]
print(tootsuud[::-1])Үр дүн:
[60, 50, 40, 30, 20, 10][::-1] бол Python-ы хамгийн алдартай бичлэгүүдийн нэг: жагсаалтыг эргүүлэх. Логик нь ийм: start орхигдсон, stop орхигдсон, step нь -1 буюу "нэг нэгээр нь ХОЙШОО". Тэгэхээр Python төгсгөлөөс эхэлж, нэг нэгээр нь урагшаа тоолж, эхлэл хүртэл явна.
Энэ бичлэг string дээр ч ажиллана:
python
ug = "монгол"
print(ug[::-1])Үр дүн:
логномТа үүнийг харах бүрдээ "аан, энэ бол эргүүлж байна" гэж шууд танидаг болно — энэ нь Python код дотор маш түгээмэл тааралддаг.
Одоо чухал зүйлийг тод хэлье: дээр үзсэн бүх зүйл string дээр ЯГ ИЖИЛ ажиллана. Хоёр өөр дүрэм сурах шаардлагагүй.
python
uguulber = "Сайн байна уу"
print(uguulber[:4])
print(uguulber[5:])
print(uguulber[-2:])
print(uguulber[::2])Үр дүн:
Сайн
байна уу
уу
SnбйауЭхний мөр эхний дөрвөн үсгийг авч байна. Хоёр дахь мөр index 5-аас цааш (зайг оруулаад). Гурав дахь мөр сүүлийн хоёр үсгийг. Дөрөв дэх мөр нь нэг дамжуулж авсан тул утгагүй харагдах ч slicing зөв ажилласан.
Ганц ялгаа нь: string нь өөрчлөгдөшгүй (immutable) — Курс 1-ээс санаж байгаа байх. Тиймээс та string-ийн зүсмийг АВЧ болно, гэхдээ зүсэмд нь шинэ утга ОЛГОЖ болохгүй. List дээр бол болно (доор үзнэ).
Практик жишээ: файлын нэрнээс өргөтгөлийг таслах.
python
failiin_ner = "tsag_agaar.py"
ner_l = failiin_ner[:-3]
print(ner_l)Үр дүн:
tsag_agaar[:-3] нь сүүлийн гурван тэмдэгтийг (.py) хассан. Энэ бол slicing-ийн хамгийн бодит хэрэглээний нэг.
[:]-ийн жинхэнэ зорилгоОдоо дээр үлдээсэн асуултад буцъя: яагаад хэн нэгэн tootsuud[:] гэж бүх жагсаалтыг зүсэх хэрэгтэй болдог вэ?
Хариулт нь: шинэ, тусдаа хуулбар үүсгэхийн тулд. Энэ ялгааг ойлгохын тулд эхлээд буруу аргыг харъя.
python
anhnii = [1, 2, 3]
huulbar = anhnii
huulbar.append(4)
print(anhnii)
print(huulbar)Үр дүн:
[1, 2, 3, 4]
[1, 2, 3, 4]Гэнэтийн зүйл болов: бид зөвхөн huulbar дээр append хийсэн ч anhnii бас өөрчлөгдсөн байна. Шалтгаан нь: huulbar = anhnii гэсэн мөр нь ХУУЛБАР ҮҮСГЭЭГҮЙ. Тэр зөвхөн ижил жагсаалтад ХОЁР ДАХЬ НЭР өгсөн. Нэг л жагсаалт байна, түүнийг хоёр нэрээр дуудаж байна.
Зүйрлэлээр: та байшиндаа хоёр дахь хаяг өгсөн ч байшин нь нэг л хэвээрээ. Аль ч хаягаар нь орсон ижил байшинд орно.
Одоо slicing-ээр:
python
anhnii = [1, 2, 3]
huulbar = anhnii[:]
huulbar.append(4)
print(anhnii)
print(huulbar)Үр дүн:
[1, 2, 3]
[1, 2, 3, 4]Одоо зөв. anhnii[:] нь ШИНЭ жагсаалт үүсгэсэн — учир нь slicing нь үргэлж шинэ жагсаалт буцаадаг гэдгийг бид дээр хэлсэн. Тэгэхээр huulbar бол тусдаа объект, түүнийг өөрчилсөн ч anhnii хөндөгдөхгүй.
Энэ хэв маягийг та мэргэжлийн кодод байнга харна. (Мөн list(anhnii) эсвэл anhnii.copy() гэсэн адил үр дүнтэй аргууд бий — гурвуулаа зөв, [:] нь хамгийн богино нь.) Функц дотор жагсаалт хүлээж авахдаа анхныг нь өөрчлөхөөс сэргийлэхийн тулд эхлээд хуулбар үүсгэдэг нь маш түгээмэл зуршил юм.
Одоо хичээлийн эхэнд амласан гэнэтийн зүйл рүү орно.
Курс 1-д та байхгүй индексээр хандвал алдаа гардгийг мэддэг:
python
tootsuud = [10, 20, 30]
print(tootsuud[10])Traceback (most recent call last):
File "main.py", line 3, in <module>
print(tootsuud[10])
IndexError: list index out of rangeIndexError: list index out of range гэдэг нь "индекс нь жагсаалтын хүрээнээс гарсан байна" гэсэн үг. Гурван элементтэй жагсаалтад index 10 байхгүй, тиймээс Python алдаа гаргаж программыг зогсооно. Энэ бол зөв, хүлээгдэж байсан зан төлөв.
Одоо ижил зүйлийг slicing-ээр хийж үзье:
python
tootsuud = [10, 20, 30]
print(tootsuud[1:10])
print(tootsuud[10:20])Үр дүн:
[20, 30]
[]Ямар ч алдаа гарсангүй. Эхний зүсэм нь index 10 хүртэл авахыг хүссэн ч жагсаалт гурван элементтэй тул боломжтой хэрийг нь авчихаад чимээгүй зогссон. Хоёр дахь зүсэм нь огт байхгүй хэсгээс авахыг хүссэн тул ХООСОН жагсаалт буцаасан — алдаа биш, зүгээр л хоосон.
Яагаад ийм зөрүү байна вэ? Учир нь энэ хоёр үйлдэл өөр өөр асуулт асууж байна.
tootsuud[10] гэдэг нь "надад index 10 дээрх ЭЛЕМЕНТИЙГ өг" гэсэн шаардлага. Тэр элемент байхгүй бол Python юу ч буцааж чадахгүй — None буцаавал таны алдааг нуух болно. Тиймээс алдаа гаргах нь цорын ганц шударга хариулт.
tootsuud[1:10] гэдэг нь "index 1-ээс 10 хүртэлх ХЭСГИЙГ өг" гэсэн хүсэлт. Тэр хэсэг хэсэгчлэн байна — index 1 ба 2 дээр элемент байгаа. Python тэднийг өгч чадна. Хүсэлтийг ХЭСЭГЧЛЭН биелүүлэх боломжтой тул алдаа гаргах шаардлагагүй.
Энэ шийдвэр практикт маш ашигтай. Жишээ нь та жагсаалтын эхний таван элементийг хүсэж байгаа ч жагсаалтад хэдэн элемент байгааг мэдэхгүй бол:
python
tootsuud = [10, 20]
print(tootsuud[:5])[10, 20]Уртыг нь шалгах шаардлагагүй. [:5] нь "хамгийн ихдээ таван элемент" гэсэн утгатай болж, байгаа хэрийг нь өгнө. Хэрэв indexing шиг алдаа гаргадаг байсан бол та бүр if len(tootsuud) >= 5 гэж шалгах хэрэгтэй болох байсан.
Гэхдээ энэ уян хатан байдал нь нэг эрсдэлтэй: та өгөгдлөө алдсанаа мэдэхгүй өнгөрч болно. Хэрэв та tootsuud[10:20] гэж бичээд хоосон жагсаалт авбал программ унахгүй, гэхдээ хүлээж байсан өгөгдөл тань алга. Тиймээс зүсмийн үр дүн хоосон байж болзошгүй бол шалгах нь зөв:
python
kheseg = tootsuud[10:20]
if not kheseg:
print("Хүссэн хэсэг олдсонгүй")Хамгийн сүүлд нэг чадварыг товч дурдъя. List нь өөрчлөгддөг (mutable) тул та зүсэмд нь ШИНЭ УТГА олгож болно:
python
tootsuud = [10, 20, 30, 40, 50]
tootsuud[1:3] = [99, 99, 99]
print(tootsuud)Үр дүн:
[10, 99, 99, 99, 40, 50]Index 1 ба 2 дээрх хоёр элемент (20, 30) хасагдаж, оронд нь гурван шинэ элемент орсон. Анзаараарай: солих элементийн тоо ижил байх шаардлагагүй — жагсаалт өөрөө уртсаж эсвэл богиносч болно.
Энэ чадвар нь заримдаа хэрэгтэй ч, хэт олон ашиглавал код ойлгомжгүй болдог. Ихэнх тохиолдолд append, remove, эсвэл шинэ жагсаалт үүсгэх нь илүү тод байдаг. String дээр энэ ажиллахгүй, учир нь string өөрчлөгдөшгүй:
python
ug = "монгол"
ug[0:2] = "МО"Traceback (most recent call last):
File "main.py", line 2, in <module>
ug[0:2] = "МО"
TypeError: 'str' object does not support item assignmentTypeError: 'str' object does not support item assignment гэдэг нь "string нь элементэд утга олгохыг дэмждэггүй" гэсэн үг. String өөрчлөгдөшгүй тул түүнийг зөвхөн УНШИЖ, шинэ string үүсгэж болно.
Хэрэв сонирхвол: tootsuud = [10, 20, 30, 40, 50, 60] гэсэн жагсаалт үүсгээд, дараах зүсмүүдийн үр дүнг эхлээд ТААМАГЛАЖ бичээд, дараа нь ажиллуулж шалгаарай: tootsuud[2:5], tootsuud[:-3], tootsuud[::-2], tootsuud[-1:]. Таамаглаад дараа нь шалгах нь зүгээр л ажиллуулж харахаас хамаагүй илүү сурах арга.
Мөн хүсвэл: өөрийн нэрээ string болгож [::-1] -ээр эргүүлж хэвлээд үзээрэй.
1. Stop багтдаг гэж бодох
python
tootsuud = [10, 20, 30, 40, 50]
print(tootsuud[0:3])[10, 20, 30]Алдааны мессеж гарахгүй, гэхдээ та дөрвөн элемент хүлээж байсан бол гурав л ирлээ. Энэ бол хамгийн түгээмэл эндүүрэл. Санамж: stop нь хэзээ ч багтдаггүй. Хэрэв танд index 3 дээрх элемент хэрэгтэй бол [0:4] гэж бич.
2. String-ийн зүсэмд утга олгох
Дээр үзсэн TypeError: 'str' object does not support item assignment. String өөрчлөгдөшгүй. Засвар: шинэ string үүсгэ, жишээ нь shine = "МО" + ug[2:].
3. Step тэг байх
python
print(tootsuud[::0])Traceback (most recent call last):
File "main.py", line 2, in <module>
print(tootsuud[::0])
ValueError: slice step cannot be zeroValueError: slice step cannot be zero гэдэг нь "зүсмийн алхам тэг байж болохгүй" гэсэн үг. Логиктой: алхам тэг бол Python хэзээ ч урагшлахгүй, төгсгөлгүй давтагдана. Тиймээс Python түүнийг шууд хориглосон.
4. Хуулбар үүсгэсэн гэж эндүүрэх
python
huulbar = anhniiАлдаа гарахгүй, гэхдээ хуулбар үүсээгүй. Хоёр нэр НЭГ жагсаалт руу заана. Нэгийг нь өөрчлөхөд нөгөө нь ч өөрчлөгдөнө. Засвар: huulbar = anhnii[:] (эсвэл anhnii.copy(), list(anhnii)).
5. Сөрөг индексийг таамаглах
Дээрх гурав дахь жишээнд би өөрөө яг ийм алдаа гаргаж, зүсмийн үр дүнг буруу бичсэн. Сөрөг индекс нь хүний тархинд байгалийн зүйл биш — эргэлзвэл гурав дөрвөн элементтэй богино жагсаалт дээр туршиж шалгаарай.
Slicing нь [start:stop:step] хэлбэртэй; list болон string дээр ЯГ ИЖИЛ ажиллана.
Start багтана, stop БАГТАХГҮЙ. [1:4] нь index 1, 2, 3 — яг гурван элемент.
Start эсвэл stop-ыг орхивол "эхнээс" эсвэл "төгсгөл хүртэл" гэсэн утгатай.
Сөрөг тоо нь төгсгөлөөс тоолно: [-3:] нь сүүлийн гурав, [:-2] нь сүүлийн хоёроос бусад.
Step нь алхам заана: [::2] нь нэг дамжуулж, [::-1] нь бүхэлд нь ЭРГҮҮЛНЭ.
[:] нь бүх зүйлийн ШИНЭ хуулбар үүсгэдэг — huulbar = anhnii нь хуулбар үүсгэдэггүй, зөвхөн хоёр дахь нэр өгдөг.
Slicing нь IndexError ГАРГАДАГГҮЙ — хязгаараас хэтэрвэл боломжтой хэрийг нь буцаана, огт байхгүй бол хоосон. Тохь тухтай, гэхдээ өгөгдөл чимээгүй алдагдаж болно.
Дараагийн хичээлд Бүлэг 2 дуусна. Тэнд бид unpacking (нэг мөрөнд олон хувьсагчид утга олгох, хоёр хувьсагчийг нэг мөрөөр солих) болон ternary expression (if/else-ийг нэг мөрөнд багтаах) хоёрыг үзнэ. Хоёулаа богино, хоёулаа мэргэжлийн кодод байнга тааралддаг бичлэгүүд юм.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.