Python에서 'Int' 객체를 첨자화할 수 없는 문제 수정

이번 글에서는 파이썬에서 첨자가 불가능한 'int' 객체를 수정하는 방법을 연구하겠습니다. 하지만 그 전에 왜 이런 일이 발생하고 그것이 무엇을 의미하는지 이해해 봅시다.

'Int' 개체가 첨자 불가능 오류란 무엇입니까?

오류 'int' 객체는 첨자화할 수 없습니다. 인덱싱이나 슬라이싱을 사용하려고 할 때 발생합니다. 정수 , 이러한 작업을 지원하지 않는 데이터 유형입니다.

우리가 알고 있듯이 정수 파이썬 데이터 형식 그것은 정수를 나타냅니다. 목록이나 사전과 달리 정수는 일련의 요소를 보유하지 않으므로 인덱싱이나 슬라이싱을 지원하지 않습니다.
예를 들어 x = 42(정수)이고 x[0]과 같은 작업을 시도하면 x가 마치 x인 것처럼 x의 첫 번째 요소에 액세스하려는 시도입니다. 목록 또는 튜플 . 정수에는 항목 모음이 포함되어 있지 않으므로 이 작업은 유효하지 않으며 TypeError: 'int' object is not subscriptable이 발생합니다.

파이썬3




# Example causing 'int' object is not subscriptable error> x> => 42> # Attempting to use subscript notation on an integer> print> (x[> 0> ])>

산출:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 4, in   print(number[0]) TypeError: 'int' object is not subscriptable 

'Int' 개체가 첨자 불가능 오류가 발생하는 이유는 무엇입니까?

Python에서 'Int' 객체는 첨자화할 수 없다는 오류는 정수(int) 객체의 특정 특성으로 인해 발생합니다. 이 오류가 발생하는 이유는 다음과 같습니다.

  • 정수의 불변성
  • 함수 반환 유형 불일치
  • 반복 가능한 구조 없음

정수의 불변성

Python의 정수는 불변이라는 것을 알고 있듯이, 이는 생성 후에 해당 값을 변경할 수 없으며 첨자 또는 인덱싱 작업이 변경 가능한 시퀀스(예: 목록, 문자열 ), 여기서 요소는 인덱스를 사용하여 액세스하거나 수정할 수 있습니다.

정수는 변경 가능한 시퀀스가 ​​아니기 때문에 'Int' 객체의 첨자 결과에 대괄호를 사용하려고 하면 첨자 가능 오류가 아닙니다.

파이썬3




# Example triggering 'Int' object is not subscriptable error> num> => 42> value> => num[> 0> ]> # Error: 'Int' object is not subscriptable>

산출:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   value = num[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable 

함수 반환 유형 불일치

이 함수에서는 else 분기에 표시된 대로 조건이 False일 때 목록이나 튜플을 반환해야 합니다.

그러나 else 분기에서 함수는 목록이나 튜플 대신 정수를 반환하므로 'Int' Object Is Not Subscriptable 오류가 발생합니다.

파이썬3




def> get_data(condition):> > '''> > This function is expected to return a list or tuple,> > but under certain conditions, it returns an integer.> > '''> > if> condition:> > return> [> 1> ,> 2> ,> 3> ]> # Returns a list> > else> :> > return> 42> # Returns an integer> > # Function call with a condition that leads to an integer being returned> result> => get_data(> False> )> > # Attempting to index the result, which is an integer in this case> first_element> => result[> 0> ]>

산출:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 15, in   first_element = result[0] TypeError: 'int' object is not subscriptable 

반복 가능한 구조 없음

우리가 알고 있듯이 정수에는 첨자에 필요한 반복 가능한 구조가 없습니다. 목록이나 문자열과 같은 반복 가능한 객체에는 인덱스를 사용하여 액세스할 수 있는 잘 정의된 요소 시퀀스가 ​​있습니다.

정수에 대괄호를 사용하려고 하면 마치 반복 가능한 속성이 있는 것처럼 처리하여 'Int' 객체가 첨자가 아닌 오류가 발생합니다.

파이썬3




# Example demonstrating misinterpretation of syntax> integer_value> => 123> value> => integer_value[> 0> ]>

산출:

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   value = integer_value[0] # Error: 'Int' object is not subscriptable TypeError: 'int' object is not subscriptable 

Python에서 'Int' 객체를 첨자화할 수 없는 문제 해결

  • 정수 대신 문자열이나 목록 사용
  • 변수 유형 확인
  • 코드 논리 검토:

자세히 연구해보자

정수 대신 문자열이나 목록 사용

Python에서는 문자열과 목록에 첨자 표기법을 적용할 수 있습니다. 따라서 아래 첨자 표기법을 사용하기 전에 정수를 문자열이나 목록으로 변환할 수 있습니다.

파이썬3




# Converting integer to string and using subscript notation> number> => 42> number_str> => str> (number)> print> (number_str[> 0> ])>

산출

4 

변수 유형 확인

우리가 사용하는 변수가 우리가 원하는 유형인지 확인해야 합니다. 시퀀스(문자열 또는 목록)여야 하는 경우 실수로 정수 값이 할당되지 않았는지 확인하세요.

파이썬3




# Checking variable type before using subscript notation> number> => 42> if> isinstance> (number, (> str> ,> list> )):> > print> (number[> 0> ])> else> :> > print> (> > f> 'Error: Variable type '{type(number).__name__}' is not subscriptable.'> )>

산출

Error: Variable type 'int' is not subscriptable. 

코드 논리 검토

코드 논리를 검사하여 아래 첨자 표기법이 정말로 필요한지 확인하세요. 그렇지 않은 경우 정수를 첨자로 사용하지 않도록 코드를 수정하세요.

파이썬3




# Reviewing code logic to avoid subscripting integers> number> => 42> number_str> => str> (number)> print> (number_str[> 0> ])>

산출

4 

결론

위의 정보를 통해 우리는 말할 수 있습니다 유형오류 : Python에서 'int' 객체는 첨자 가능 오류가 아닙니다. 일반적으로 정수가 목록이나 튜플과 같이 첨자 가능한 객체로 잘못 처리되는 유형 불일치로 인해 발생합니다. 따라서 이를 방지하려면 특히 동적이거나 복잡한 데이터 구조를 다룰 때 데이터 유형을 일관되게 확인하는 것이 중요합니다.