23.4 반복문으로 리스트의 요소를 모두 출력하기

리스트에 인덱스를 지정하여 값을 한 개씩 출력하기는 상당히 귀찮죠? 이번에는 리스트와 for 반복문을 사용하여 간단하게 모든 요소를 출력해보겠습니다. 그냥 for in 뒤에 리스트를 지정하면 됩니다.

for 변수 in 리스트:
     반복할 코드
#↑ 들여쓰기 4칸

다음은 for로 리스트 a의 모든 요소를 출력합니다.

>>> a = [38, 21, 53, 62, 19]
>>> for i in a:
...     print(i)
...
38
21
53
62
19

for i in a:는 리스트 a에서 값을 꺼내서 i에 저장하고, 꺼낼 때마다 코드를 반복합니다. 따라서 printi를 출력하면 요소의 값을 순서대로 모두 출력할 수 있습니다.

물론 in 다음에 리스트를 직접 지정해도 상관 없습니다.

for i in [38, 21, 53, 62, 19]:
    print(i)

for에 리스트를 지정하면 요소의 값을 바로 가져와서 편리한데 for에서 인덱스를 지정하여 값을 가져올 수는 없을까요? 이때는 rangelen으로 리스트의 길이(요소 개수)를 넣어주면 인덱스를 순서대로 만들어줍니다. 따라서 리스트에 인덱스를 지정하여 값을 가져올 수 있습니다.

>>> a = [38, 21, 53, 62, 19]
>>> for i in range(len(a)):
...     print(a[i])
...
38
21
53
62
19

즉, forrange(len(a))를 지정하면 i에는 요소의 값이 아닌 0부터 마지막 인덱스까지 들어갑니다.

참고 | for에서 인덱스와 요소의 값을 동시에 출력하기

for 반복문으로 요소의 값을 출력할 때 인덱스도 함께 출력하고 싶을 수도 있습니다. 이때는 enumerate를 사용합니다.

  • for 인덱스, 값 in enumerate(리스트):

>>> a = [38, 21, 53, 62, 19]
>>> for index, value in enumerate(a):
...     print(index, value)
...
0 38
1 21
2 53
3 62
4 19

for index, value in enumerate(a):와 같이 enumerate에 리스트를 넣으면 반복문에서 인덱스와 요소의 값을 동시에 꺼내 올 수 있습니다.

지금까지 사용한 in 연산자는 리스트에 특정 값이 있는지 확인할 때도 사용할 수 있습니다.

  • 값 in 리스트
  • 값 not in 리스트
>>> a = [38, 21, 53, 62, 19]
>>> 21 in a
True
>>> 21 not in a
False
>>>58 in a
False
>>> 58 not in a
True

21 in a와 같이 in 앞에 확인할 값을 지정하면 됩니다. 리스트에 해당 값이 있으면 True, 없으면 False입니다(in 앞에 not을 붙였을 때는 값이 있으면 False, 없으면 True). 물론 TrueFalse가 나오므로 if 조건문에도 사용할 수 있겠죠?

이번에는 while 반복문으로 리스트의 요소를 출력해보겠습니다.

>>> a = [38, 21, 53, 62, 19]
>>> i = 0
>>> while i < len(a):
...     print(a[i])
...     i += 1
...
38
21
53
62
19

while 반복문으로 리스트의 요소를 출력할 때는 변수 i를 인덱스로 활용합니다. 먼저 변수 i를 0으로 만들어주고, i < len(a)처럼 i가 리스트의 길이(요소 개수) 직전까지만 반복하도록 만듭니다. 즉, 리스트의 인덱스는 0부터 시작하고 마지막 인덱스는 리스트의 길이보다 1이 작으므로 <를 사용합니다. 만약 i <= len(a)처럼 <=을 사용하면 리스트의 범위를 벗어나게 되므로 주의해야 합니다.

>>> a = [38, 21, 53, 62, 19]
>>> i = 0
>>> while i <= len(a):
...     print(a[i])
...     i += 1
...
38
21
53
62
19
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
IndexError: list index out of range

요소를 출력할 때는 print(a[i])와 같이 리스트의 인덱스 부분에 i를 지정하여 출력합니다. 그 다음에는 i가 1씩 증가하도록 만들면 됩니다.

while i < len(a):
    print(a[i])
    i += 1