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()
함수의 한 가지 더 쉬운 구현은 try
및 except
블록을 사용하는 것입니다. 동일한 내용은 다음 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
try
및 except
블록은 문제가 있는 경우 None
을 반환하고 모든 필수 조건이 성공적으로 충족되면 실제 값을 반환합니다.
관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.