Python에서 배열 오류에 대한 너무 많은 인덱스 수정

Vaibhav Vaibhav 2023년6월21일
Python에서 배열 오류에 대한 너무 많은 인덱스 수정

배열 또는 목록 및 튜플은 Python의 연속 데이터 구조입니다. 단일 데이터 유형과 여러 데이터 유형에 속하는 요소를 함께 저장할 수 있습니다. 예를 들어, 5개의 정수 요소, 3개의 부동 소수점 숫자, 7개의 클래스 개체, 2개의 집합 및 8개의 부울 값을 포함하는 목록이나 배열 또는 튜플이 있을 수 있습니다.

이러한 요소에 액세스하기 위해 이러한 요소의 인덱스를 사용할 수 있습니다. 이러한 데이터 구조는 0-인덱스 기반입니다. 데이터 구조의 길이보다 크거나 같은 인덱스에 있는 요소에 액세스하려고 한다고 가정합니다. 이 경우 IndexError 예외가 발생합니다.

이 기사에서는 Python에서 이 문제를 해결하는 방법을 배웁니다.

Python에서 배열 오류에 대한 인덱스가 너무 많음을 수정하는 방법

IndexError 예외를 수정하려면 데이터 구조의 길이보다 크거나 같은 인덱스를 입력하지 않도록 해야 합니다.

위에서 언급한 접근 방식은 분명한 것입니다. 그러나 목록이나 튜플에서 값을 가져오기 위해 스텁이나 유틸리티 함수를 작성할 수 있습니다. 이 함수는 인덱스가 존재하는 경우 해당 값을 가져오고 유효하지 않은 인덱스 값을 안전하게 처리하도록 합니다. 동일한 내용은 다음 Python 코드를 참조하십시오.

def get_value(structure, index):
    if not isinstance(index, int):
        return None

    if not isinstance(structure, (list, tuple)):
        return None

    if index >= len(structure):
        return None

    return structure[index]


a = ["Hello", "World", 1, 2.0, 3.00000, True, False]
print(get_value([], 4.0))
print(get_value(a, 4))
print(get_value(a, -1))
print(get_value(None, 8))
print(get_value("Hello World", "Python"))

출력:

None
3.0
False
None
None

지정된 인덱스에서 값을 반환하기 전에 위의 스텁 함수는 인덱스가 int 유형이고 데이터 구조가 list 또는 tuple 유형이고 인덱스가 데이터 구조의 길이보다 작은지 확인합니다. . 모든 검사가 통과되면 인덱스에서 필요한 값을 안전하게 반환할 수 있습니다.

get_value() 함수의 한 가지 더 쉬운 구현은 tryexcept 블록을 사용하는 것입니다. 동일한 내용은 다음 Python 코드를 참조하십시오.

def get_value(structure, index):
    try:
        return structure[index]
    except:
        return None


a = ["Hello", "World", 1, 2.0, 3.00000, True, False]
print(get_value([], 4.0))
print(get_value(a, 4))
print(get_value(a, -1))
print(get_value(None, 8))
print(get_value("Hello World", "Python"))

출력:

None
3.0
False
None
None

tryexcept 블록은 문제가 있는 경우 None을 반환하고 모든 필수 조건이 성공적으로 충족되면 실제 값을 반환합니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Python Error