왜 이런 오류가 뜨는지 도무지 이해가 가지 않습니다. TypeError: argument of type 'int' is not iterable

조회수 7640회

먼저 코드부터 보여드리겠습니다.

arr1 = [1,2,3,3,3,3,4,4]
arr2 = []
arr3 = {1:0,2:0,3:0,4:0}

# 1. arr1의 중복되는 숫자 제외하고 제외한 set값 arr2에 리스트로 추가하기
arr2 = list(set(arr1))

a = 0
b = 0
c = 0

# 2. arr2에 넣어둔 숫자를 arr1과 비교하여 중복되는 경우 arr3의 딕셔너리에 횟수 추가하기
for a in range(len(arr2)):
    for b in range(len(arr1)):
        if arr2[a] in arr1[b]:
            arr3[a+1] += 1

마지막에서 두번째 라인인 ' if arr2[a] in arr1[b]: ' 부분에서 오류가 뜹니다.

    if arr2[a] in arr1[b]:
TypeError: argument of type 'int' is not iterable

혹시나 arr1과 arr2가 int형이 아니게 된건가 싶어서 type으로 프린트 해봐도 int로 뜨는데 왜 이런 오류가 뜨는지 답답합니다.

1 답변

  • TypeError: argument of type 'int' is not iterable 라는 에러메시지는 iterable 타입(리스트, 튜플 같은)이 와야할 자리에 int 타입이 있기 때문에 발생하는 에러입니다.

    에러가 발생한 코드에서 변수는 두개 입니다. 이 중에 iterable 이어야할 것은 뒤의 것입니다. in arr1[b] 에서, in은 뒤쪽에 (집합적인) iterable 이 있어야 하는데, arr1[b]는 그냥 단순한 int 정수 하나입니다.

    • 몰랐던 내용인데 정말 감사드립니다... 큰 도움 되었습니다. 결과적으로 in 대신 == 을 넣으니 원하는대로 작동하네요 빠른답변 정말 감사합니다 알 수 없는 사용자 2021.6.11 16:37

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)