1. 리스트에서 출력하기
이번 챕터에서는 순회 가능하다는 것이 어떤 의미인지 알아보도록 하겠습니다.
1.1 iter( )
입력
l = [1, 2, 3, 4, 5] i = iter(l) i
출력
list_iterator at 0x214c76c0b3
1.2 next( )
위에 이어서 아래와 같이 서술하면 i의 다음값을 출력할 수 있어요. 이처럼 다음 값이 있는 것을 이터레이터, 순회 가능한 객체라 합니다. 하지만 순회 가능하다 해서 순서가 있는 것은 아니라는 점을 기억해두세요. 예를 들어 딕셔너리요.
입력
l = [1, 2, 3, 4, 5] i = iter(l) print(i.__next__()) print(i.__next__()) print(i.__next__())
출력
1 2 3
range도 동일하게 작동하는지 보도록 하겠습니다.
입력
r = range(2, 11, 2) j = iter(r) print(j.__next__()) print(j.__next__()) print(j.__next__())
출력
2 4 6
index가 있는 자료형에서는
__getitem__
으로 값을 선택할 수 있습니다.입력
l l[1] l[1:3] l.__getitem__(3) #3이 index값입니다.
출력
[1, 2, 3, 4, 5] [2] [2, 3] 4
즉, l[ ]로 출력하는 값은 l.__getitem__( )으로 출력하는 값과 같습니다.
입력
#a + a -> __add__와 매칭이 되었던 것처럼 #a[3] -> __getitem__(3)과 매칭이 됩니다. l.__getitem__(3) l.__getitem__(slice(1, 3))
출력
4 [2, 3]
1.3 slice( )
__getitem__
을 이용하여 아래와 같이 출력할 수도 있습니다.입력
l.__getitem__(slice(1, 3)) l[slice(1, 3)]
출력
[2, 3]
2. set에서 출력하기
이번에는 순서가 없는 set을 출력해보도록 하겠습니다.
입력
s = {1, 2, 3} i = iter(s) print(i.__next__()) print(i.__next__()) print(i.__next__())
출력
1 2 3
__getitem__
도 작동할까요? 아래 보시는 것처럼 순서가 없기 때문에 애러가 발생합니다. 그러므로 slice( )도 실행되지 않습니다.입력
s.__getitem___(1)
출력

3. 딕셔너리에서 출력하기
마찬가지로 딕셔너리에서도 출력이 되는지 확인해보겠습니다.
입력
d = {'one':'하나', 'two': '둘'} i = iter(d) print(i.__next__()) print(i.__next__())
출력
one two
입력
d.__getitem___(1)
출력

에러가 발생하지만 set에서 발생한 에러와는 조금 다릅니다. set에서는 __getitem___이 없다는 에러가 발생했지만 딕셔너리 에서는 키의 값에서 에러가 발생했습니다. 그러므로 키의 값에 다른 값을 입력할 수 있습니다.
입력
d.__getitem__('one')
출력
'하나'
list
에서는index의 값
이 들어가야 하고 딕셔너리
에서는 키의 값
이 들어가야 출력이됩니다.