Python의 For 루프: 알아야 할 모든 것
게시 됨: 2022-08-18이 튜토리얼에서는 코드 예제를 통해 Python에서 for 루프를 사용하는 방법에 대해 모두 알려줍니다.
프로그래밍에서 루프는 특정 명령문 집합을 반복하는 데 도움이 됩니다. 다음과 같은 경우 명확한 반복을 위해 for 루프를 사용합니다.
- 유한한 수의 요소가 있는 시퀀스로 작업할 것임을 알고 있습니다.
- 반복 횟수를 미리 보고
이 튜토리얼은 파이썬에서 for 루프 작업에 대한 모든 것을 가르칠 것입니다. for 루프를 사용하여 구문과 간단한 반복을 배우는 것으로 시작합니다. 그런 다음 명령줄 인수 처리, 루프 제어 문 사용 등에 대해 배웁니다.
시작하자…
루프용 Python 구문

Python에서 for 루프 를 사용하기 위한 일반 구문은 다음과 같습니다.
for item in iterable: # do something on item statement_1 statement_2 . . . statement_n
위 구문에서:
- item 은 반복 변수입니다.
- iterable 은 목록, 튜플 및 문자열과 같은 모든 Python iterable을 나타냅니다.
- statement_1 ~ statement_n 은 루프 본문의 명령문을 나타냅니다.
참고 : 반복 가능한 이름 뒤에 콜론( :
)을 추가하고 루프 본문의 모든 명령문을 4칸 들여씁니다.
Python의 루프 구조 공통

for 루프를 사용할 때:
- 이전 섹션에서 설명한 구문을 사용하여 항목에 직접 액세스할 수 있습니다.
-
range()
및enumerate()
) 와 같은 Python 내장 함수와 함께 for 루프를 사용할 수 있습니다.
이 섹션에서 다룰 것입니다.
for 루프를 사용하여 요소 액세스
가독성을 높이려면 목록에 포함된 내용을 나타내는 반복 변수를 선택해야 합니다. 예를 들어, 아래 예에서 nums
는 num
을 반복 변수로 사용하는 숫자 목록입니다. for num in nums:
가 직관적이고 읽기 쉽습니다.
nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3
몇 가지 예를 더 추가하면 forfruit fruits
for fruit in fruits:
및 for student in students:
when looping throughfruits 및 students
list를 각각 사용할 수 있습니다.
range() 함수와 함께 for 루프 사용하기
인덱스를 통해 목록 항목에 액세스하려면 range()
함수를 사용할 수 있습니다.
Python에서
range(start, stop, step)
은 범위 객체를 반환합니다. 이 객체를 반복하여 인덱스를 가져올 수 있습니다:start
,start + step
등,stop
까지는 포함하지 않지만.
for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3
range()
함수를 사용하여 반복할 일련의 숫자를 생성할 수도 있습니다. 아래 예에서는 선택적 step
매개변수를 2로 설정합니다. 따라서 2단계에서 10에서 20까지의 숫자를 얻습니다.
for i in range(10,20,2): print(i) # Output 10 12 14 16 18
enumerate() 함수와 함께 for 루프 사용
iterable을 반복하고 항목과 해당 인덱스에 동시에 액세스하려는 경우 enumerate() 함수를 사용할 수 있습니다.
여기 예가 있습니다.
for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3

Python에서 for 루프를 사용하여 목록에서 항목을 읽는 방법
for 루프를 사용하여 Python 목록을 반복하려면 이전 섹션의 일반 구문을 사용할 수 있습니다.
아래 예에서 nums
는 반복 가능하고 num은 반복 변수입니다.
nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9
Python에서 for 루프를 사용하여 문자열을 반복하는 방법
Python 문자열은 반복 가능하며 루핑, 인덱싱, 슬라이싱 등을 수행할 수 있습니다.
참고 : Python에는 내장 문자 데이터 유형이 없습니다. 따라서 문자를 길이가 1인 문자열로 취급할 수 있습니다.
my_string = "Code" for char in my_string: print(char) # Output C o d e
Python에서 for 루프를 사용하여 배열을 반복하는 방법

루프와 중첩 for 루프를 사용하여 배열을 반복할 수 있습니다.
아래 코드 조각에서 array1은 더 작은 목록을 요소로 포함하는 중첩 목록입니다. 따라서 array1을 반복하면 아래와 같이 각 행이 제공됩니다.
array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]
각 행의 개별 요소에 액세스하려면 다른 for
루프를 사용할 수 있습니다.
array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)
위의 코드 셀에서:
- 외부 for 루프는 행을 색인화하는 데 도움이 됩니다.
- 내부 for 루프를 사용하면 각 행의 요소를 탭할 수 있습니다.
다음은 해당 출력입니다.
Output 2 3 7 8
for 루프를 사용하여 명령줄 인수를 읽는 방법

개발자는 명령줄에서 Python 스크립트를 실행하고 명령줄 인수를 사용하여 스크립트와 상호 작용하는 데 익숙해야 합니다.
sys 및 argparse와 같은 Python의 내장 모듈을 사용하여 명령줄 인수를 구문 분석하고 읽을 수 있습니다.
이 섹션에서는 sys
모듈을 사용하고 for
루프를 사용하여 명령줄 인수 목록을 반복하는 방법을 살펴보겠습니다.
sys 모듈에서 sys.argv
는 전달하는 명령줄 인수 목록입니다. 따라서 Python 목록을 반복하는 것처럼 sys.argv
를 반복할 수 있습니다.
# main.py import sys for arg in sys.argv: print(arg)
이제 아래와 같이 명령줄에서 프로그램을 실행할 수 있습니다.
$ python main.py Hello Python3 main.py Hello Python3
기본적으로 모듈의 이름은 첫 번째 인수이며 sys.argv
의 인덱스 0에 있습니다.
인덱스와 해당 인수에 액세스하려면 range()
함수를 사용할 수 있습니다.
# main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
️ 다음으로 main.py를 다시 실행합니다.
$ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3
모듈 이름이 아닌 다른 인수를 구문 분석하고 처리하려고 한다고 가정합니다. 아래 코드 셀과 같이 시작 값을 1로 설정할 수 있습니다.

# main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
$ python main.py Hello Python3 arg1 is Hello arg2 is Python3

이 모든 것을 종합 하면 main.py 파일에는 다음 코드가 포함됩니다.
# main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
다음은 모듈을 실행할 때의 출력입니다.
$ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3
for 루프 내부에서 break 문을 사용하는 방법

다른 프로그래밍 언어와 마찬가지로 Python은 루프 제어 문 break
및 continue
사용도 지원합니다. 이러한 명령문은 일부 조건에 따라 루프의 제어 흐름을 변경하는 데 도움이 될 수 있습니다. for 루프 내에서 사용하는 방법을 살펴보겠습니다.
break
문은 특정 조건이 True
일 때 루프를 벗어나는 데 사용할 수 있습니다.
우리는 다음을 수행하는 프로그램을 작성하고자 합니다.
-
k
를 입력 개수로 고정합니다. -
for
루프를 사용하여 한 번에 한 자리씩 사용자 입력을 읽고 음수가 아닌 숫자(0보다 크거나 같음)를 합산합니다. - 이 프로세스는 사용자가 음수가 아닌 숫자를 입력하는 한 계속되어야 합니다.
- 사용자가 음수를 입력하면 루프를 종료하고 합계를 출력합니다.
다음은 위의 작업을 수행하는 코드입니다.
k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)
사용자가 0보다 작은 숫자를 입력하면 제어는 for 루프에서 루프 이후의 첫 번째 문으로 나갑니다.
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10
루프 내부에서 계속 문을 사용하는 방법
continue
문은 특정 조건에 따라 특정 반복을 건너뛰는 데 사용할 수 있습니다.
이전 섹션에서 동일한 예를 사용하겠습니다.
- 사용자 입력을 읽고 음수가 아닌 숫자의 합계를 계산합니다.
- 사용자가 음수를 입력하면 해당 반복을 건너뛰고 다음 반복 으로 진행하고 다음 숫자를 읽습니다.
k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)
다음은 샘플 출력입니다.
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13
네 번째 숫자는 음수인 -1입니다. 그러나 이번에는 지정된 입력 수에 도달할 때까지 for 루프가 계속되고 음수 입력은 무시됩니다. 기본적으로 k 입력 숫자에서 음이 아닌 모든 숫자의 합계를 반환합니다.
Python에서 무한 루프를 실행할 수 있습니까?

지금까지 논의한 모든 예제와 사용 사례에서 우리는 무한 for 루프 문제에 부딪힌 적이 없습니다. 그러나 파이썬에서 무한 루프를 가질 수 있습니까?
다음 함수 double()
을 고려하십시오.
def double(x = 1): return x*2
-
x
값을 지정하지 않고double()
함수를 호출하면 기본값 1이 사용됩니다. - 함수 호출에서
x
에 대한 값을 지정하면 해당 값이 사용됩니다.
double() # Returns: 2 double(20) # Returns: 40
파이썬에서 iter() 함수는 반복자 객체를 반환합니다. next(iter-obj)
를 사용하여 시퀀스를 반복하고 후속 항목에 액세스할 수 있습니다.
– 호출 가능 객체 와 값 sentinel 을 고려하십시오.
–
iter(callable-object, sentinel)
는callable-object
의 반환 값이sentinel
과 같을 때까지 반복을 수행하는 데 사용할 수 있습니다.
이 경우에 왜 무한 루프를 가질 수 있는지 알 수 있습니까?

음, callable-object
와 sentinel
값이 있습니다. 콜러블의 반환 값이 센티넬과 결코 같지 않으면 루프가 영원히 계속됩니다!
위의 함수를 호출 가능한 double
사용하고 센티넬 값을 0으로 설정합시다.
참고 : double()
함수 호출이 아닌 double
함수의 이름을 언급하십시오.
double
함수의 반환 값은 항상 2이고 결코 0과 같지 않기 때문에 무한 루프가 있습니다!
️ 다음 코드 셀을 실행해 보세요. for 루프는 무한하므로 프로그램을 강제로 중지해야 합니다.
for _ in iter(double,0): print("Running...")

Python For 루프: 연습 문제
#1 . for 루프를 사용하여 0에서 20 사이의 모든 짝수를 출력합니다.
힌트 : 올바른 step
값으로 range()
함수를 사용하세요.
#2 . 20부터 0까지의 모든 짝수를 출력하십시오.
힌트 : range()
함수에서 step
매개변수에 음수 값을 사용하십시오.
#3 . 3차원 NumPy 배열을 만듭니다.
힌트 : 배열의 행과 개별 항목에 액세스하는 데 필요한 경우 for 루프 및 중첩 for 루프를 사용합니다.
마무리
다음은 이 튜토리얼에서 배운 내용을 요약한 것입니다.
- range() 및 enumerate() 함수와 함께 Python for 루프를 사용하는 구문
- for 루프를 사용하여 목록, 배열 및 문자열을 반복하고 명령줄 인수 읽기
- 루프 제어 문 사용: 루프에서 벗어나려면 break 를 사용하고 for 루프 내에서 조건에 따라 특정 반복을 건너뛰기 위해 continue 문을 사용합니다.
- 파이썬에서 무한 for 루프의 가능성 이해하기
다음으로 Python에서 split() 메서드를 사용하는 방법을 배웁니다.