Ի՞նչ է նշանակում 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-ում ձեր ազատ ժամանակ, որպեսզի ավելի լավ պատկերացնեք այդ ամենը: