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 18enumerate() 함수와 함께 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 9Python에서 for 루프를 사용하여 문자열을 반복하는 방법
Python 문자열은 반복 가능하며 루핑, 인덱싱, 슬라이싱 등을 수행할 수 있습니다.
참고 : Python에는 내장 문자 데이터 유형이 없습니다. 따라서 문자를 길이가 1인 문자열로 취급할 수 있습니다.
my_string = "Code" for char in my_string: print(char) # Output C o d ePython에서 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 8for 루프를 사용하여 명령줄 인수를 읽는 방법

개발자는 명령줄에서 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 Python3for 루프 내부에서 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() 메서드를 사용하는 방법을 배웁니다.
