파이썬에서 다중 for 문 한 줄로 쓰는 방법

파이썬에서 다중 for 문 한 줄로 쓰는 방법

How to Use Multi For-Stamement in Python

코드

인덱스 i가 2까지, j가 4까지 반복되기를 원하면 for 문을 다음과 같이 작성하면 된다.

>>> for i in range(3):
...     for j in range(5):
...             if j == 4:
...                     print((i,j))
...             else :
...                     print((i,j), end="")
...
(0, 0)(0, 1)(0, 2)(0, 3)(0, 4)
(1, 0)(1, 1)(1, 2)(1, 3)(1, 4)
(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)

표준 라이브러리인 itertools에서 product()를 사용하면 위와 같은 동작을 하는 for 문을 한 줄로 처리할 수 있다.

>>> for i, j in itertools.product(range(3), range(5)):
...     if j == 4:
...             print((i,j))
...     else :
...             print((i,j), end="")
...
(0, 0)(0, 1)(0, 2)(0, 3)(0, 4)
(1, 0)(1, 1)(1, 2)(1, 3)(1, 4)
(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)

zip()와 함께 쓰면 다음과 같은 반복문을 구현할 수 있다.

>>> for i,(j,k) in zip(range(3**2), itertools.product(range(3), range(3))):
...     print(i,j,k)
...
0 0 0
1 0 1
2 0 2
3 1 0
4 1 1
5 1 2
6 2 0
7 2 1
8 2 2

환경

  • OS: Windows10
  • Version: Python 3.9.2
댓글