Ի՞նչ է նշանակում Python-ի «Ցուցակի ինդեքսը տիրույթից դուրս» սխալը:
Ինդեքսային սխալ կա ձեր և լիարժեք գործող ծրագրի միջև... ի՞նչ եք անելու:
Այսպիսով, դուք աշխատում էիք ցուցակի կամ զանգվածի հետ Python-ում և հավանաբար փորձել եք այն կտրատել: Սակայն ակնկալվող արդյունքի փոխարեն դուք ստանում եք սխալ, որն ասում է. «Ցուցակի ինդեքսը տիրույթից դուրս է»: Մի անհանգստացեք, դա կարող է պատահել ցանկացածի հետ:
Եկեք ուսումնասիրենք, թե ինչ է նշանակում այս սխալը, դրա պատճառը և ինչպես հեռացնել այն առանց որևէ այլ անհանգստության:
Ի՞նչ է նշանակում «ցուցակի ինդեքսը տիրույթից դուրս» սխալը Python-ում:
Երբ Python-ը «ցուցակի ինդեքսը տիրույթից դուրս» սխալ է նետում, դա նշանակում է, որ դուք փորձել եք կտրատել ցուցակը վերջին ցուցանիշից այն կողմ:
Python-ը ցուցակի յուրաքանչյուր տարր նույնացնում է իր ինդեքսով: Իսկ ցուցակի ինդեքսը սկսվում է զրոյից։ Օրինակ, երբ դուք ունեք հինգ կետերով ցուցակ, դրա առաջին կետը գտնվում է զրոյական ինդեքսում, մինչդեռ վերջինը չորրորդ ինդեքսում է:
Օրինակ, հինգ ծրագրավորման լեզուների ցանկում.
Languages = ["Python", "Go", "PHP", "C", "Perl"]
Վերոնշյալ ցուցակի ինդեքսավորումը գտնվում է զրոյի և չորսի միջև: Այսպիսով, փորձելով այն կտրատել՝ հինգերորդ տարրը տպելու համար, ինչպես ցույց է տրված ստորև, տալիս է սխալ.
print(languages[5])
<strong>Output</strong>:
IndexError: list index out of range
Վերոնշյալ օրինակում Python-ը փորձում է փնտրել ցուցակի հինգերորդ ինդեքսը, և երբ չի կարողանում գտնել այն, նետում է ցուցակի ինդեքսը սխալ։ Դա պայմանավորված է նրանով, որ առաջին տարրը (Python) գտնվում է զրոյական ինդեքսում, մինչդեռ վերջինը (Perl) գտնվում է 4-րդ ինդեքսում:
Դա հիմք է հանդիսանում «ցուցակի ինդեքսը տիրույթից դուրս» սխալի հիմքում: Ինչպես ասվեց, Python-ը նետում է այն ամեն անգամ, երբ փորձում եք կտրատել ցուցակը իր վերջին ցուցանիշից այն կողմ:
Ինչպես հեռացնել «ցուցակի ինդեքսը տիրույթից դուրս» սխալը Python-ում
Այսպիսով, ինչպես կարող եք հեռացնել այս սխալը: Հեշտ է։
Բացի վերը նշված նախորդ բաժնից, դուք կարող եք տպել ինդեքսները՝ օգտագործելով for հանգույցը ցուցակի ընկալման մեջ.
indexes = [languages.index(i) for i in languages]
print(indexes)
<strong>Output</strong>:<strong>
</strong>[0, 1, 2, 3, 4]
Ցուցակի ինդեքսը ծրագրավորման մեջ կտրատման հիմքն է։ Այսպիսով, քանի որ դուք գիտեք ցուցակի ամենաբարձր ցուցանիշը վերը նշված արդյունքի համար (4), կարող եք վերծանել հատվածի սահմանը:
Հետևաբար, ցուցակը կտրատելու և վերջին կետը ստանալու համար.
print(languages[4])
<strong>Output</strong>:<strong>
</strong>Perl
Այժմ այն տալիս է ճիշտ արդյունքը:
Ի՞նչ անել, եթե ցանկանում եք շրջել ցուցակի միջոցով՝ օգտագործելով դրա ինդեքսը:
Բացի սովորական Python for loop-ից, կարող եք նաև օգտագործել ինդեքսի հայեցակարգը՝ ցուցակի միջոցով կրկնելու համար: Թեև այս մեթոդը կարող է դժվար թվալ, երբեմն դա անխուսափելի է: Օրինակ, դա հարմար է, եթե ցանկանում եք տեսակավորել ցուցակը հակառակ հերթականությամբ:
Այս մեթոդն աշխատում է սկզբնական ինդեքս սահմանելով և մեկով ավելացնելով կամ նվազեցնելով մինչև վերջին հասանելի ինդեքսը:
Աճող ինդեքսային թվով տարրերը տպելու համար (առաջինից մինչև վերջին կետը), օրինակ.
index = 0 <strong># Initial index</strong>
for i in Languages:
print(Languages[index])
index +=1
<strong>Output</strong>:<strong>
</strong>Python
Go
PHP
C
Perl
Բայց ի՞նչ կլինի, եթե սկզբնական ինդեքսը զրոյի փոխարեն մեկ դնեք: Պետք է նայել:
index = 1 <strong># Initial index</strong>
for i in Languages:
print(Languages[index])
index +=1
<strong>Output</strong>:<strong>
</strong>Go
PHP
C
Perl
IndexError: list index out of range
Վերոնշյալ օրինակում ինդեքսավորումը սկսվում է երկրորդ կետից (ինդեքս մեկ, Գնալ): Այսպիսով, երբ ավելանում է, հանգույցը չի դադարում, մինչև այն ավարտի հինգ տարրերի հաշվարկը: Սա ստիպում է ինդեքսն աճել մեկով մինչև վերջին կետը:
Հետևաբար, հատվածը հարվածում է հինգերորդ ինդեքսին, որը հասանելի չէ: Այսպիսով, այն նետում է ինդեքսային սխալ: Դա նշանակում է, որ յուրաքանչյուր ապրանքի համար ցուցանիշը աճում է հետևյալ օրինակով.
1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5
Ճիշտ օրինակի փոխարեն, որը հետևյալն է.
0=0, 0+1=1, 1+1=2, 1+2=3, 1+3=4
Ինչպես տեսնում եք, վերը նշված ինդեքսի ամենաբարձր արժեքը չորսն է, ինչը ճիշտ է, քանի որ օղակը սկսում է ինդեքսավորումը զրոյից ավելացնել:
Հետևաբար, սկզբնական ինդեքսը զրոյացնելով, ինչպես արեցիք այս բաժնի առաջին օրինակում, վերացնում է «ցուցակի ինդեքսը տիրույթից դուրս» սխալը.
index = 0 <strong># Initial index</strong>
for i in Languages:
print(Languages[index])
index +=1 <strong>#Increase the index by one for each iteration
</strong>
Այս հայեցակարգը տարրերը հակառակ հերթականությամբ դուրս բերելու համար կիրառելու համար ձեզ հարկավոր է զանգվածի երկարությունից հանել մեկը: Այսպիսով, սա ստիպում է ինդեքսին սկսել չորսից և հետ հաշվել մինչև առաջին ցուցանիշը՝ զրո:
Սա օգտակար է, եթե վստահ չեք ցուցակի երկարության արժեքի մասին, որը գալիս է աղբյուրից, օրինակ, տվյալների բազայից:
Ահա մի օրինակ.
index = (len(Languages)-1)
for i in Languages:
print(Languages[index])
index -=1 <strong>#Decrease the index by one for each iteration</strong>
<strong>Output</strong>:
Perl
C
PHP
Go
Python
Բայց ցանկի երկարությունից մեկը չհանելը հանգեցնում է «ցուցանիշի սահմաններից դուրս» սխալի:
index = (len(Languages)-1)
for i in Languages:
print(Languages[index])
index -=1
<strong>Output</strong>:
IndexError: list index out of range
Վերոնշյալ կոդը թույլ է տալիս ինդեքսային սխալ, քանի որ ցուցակի երկարությունը հինգն է, և այն փորձում է սկսել ինդեքսավորվել հինգից մինչև զրո, մինչդեռ ամենաբարձր ցուցանիշը չորսն է: Այսպիսով, դա նշանակում է, որ ցուցակը չունի հինգերորդ ինդեքս (վեցերորդ կետ):
Ստացեք Creative Handling Lists Python-ում
Python-ի սխալները մարդու համար հարմար են և սովորաբար ընթեռնելի: Անընդհատ, սա դրանք դարձնում է ողջամիտ չափով հետագծելի:
Ինչպես սովորեցիք, ցուցակի ինդեքսը տիրույթից դուրս սխալ հեռացնելը բավականին հեշտ է: Եթե ձեր ապագա ծրագրերում բախվեք այս սխալի հետ, անկախ նրանից, թե որքան բարդ է ցուցակը, կարող եք կիրառել այս գրառման մեջ բացատրված հասկացությունները՝ խնդիրը լուծելու համար:
Ազատ զգալ ստեղծագործել բարդ ցուցակներով: Կարող եք նաև սովորել, թե ինչպես դասավորել ցուցակները Python-ում ձեր ազատ ժամանակ, որպեսզի ավելի լավ պատկերացնեք այդ ամենը: