공부 노트/파이썬

for ~ in ~ 형태의 반복문

김뚱입니다 2024. 9. 7. 22:52

백준 문제를 풀다 보니 아는 것의 한계를 느꼈다...

브론즈 레벨의 문제부터 풀고 있어서 간단한 파이썬 문법들로만 코드를 작성해도 문제가 없었지만

문제 순위가 올라갈수록 내가 아는 얕은 지식으로는 한계가 있다는 걸 느끼고

앞으로 사용할 예정(?)인 친구들을 정리를 해두고 보려 한다!

 

왜? 여러 반복문 패턴을 활용해야 하냐면

코드를 더 효율적으로 작성하기 위해서!

아래에 예시와 설명을 간단하게 작성해 놨으니 슥슥 내리면서 봐보도록 하자.

 

 

1. for i in range(n):

  • 0부터 n-1까지의 정수를 순서대로 반복
  • range(5)는 0부터 4까지의 값을 생성, i는 이 값들을 순서대로 받아서 각 반복에서 출력
for i in range(5):
    print(i)
    
#출력하면
0
1
2
3
4

 

 

2. for char in S (문자열 순회):

  • 문자열의 각 문자를 순서대로 순회
  • 문자열 S의 각 문자를 하나씩 char에 할당하며, 순서대로 문자를 출력
S = "Hello"
for char in S:
    print(char)
    
# 출력하면
H
e
l
l
o

 

 

3. for item in list (리스트 순회):

  • 리스트의 각 요소를 순서대로 순회
  • 리스트 my_list의 각 요소를 item에 할당하며, 순서대로 출력
my_list = [10, 20, 30, 40]
for item in my_list:
    print(item)
    
# 출력하면
10
20
30
40

 

 

4. for key in dict (딕셔너리 순회):

  • 딕셔너리의 들을 순서대로 순회
  • 딕셔너리 my_dict의 키들을 하나씩 순회하며, key에 할당된 값으로 해당 키와 그에 대응하는 값을 출력
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
    print(key, my_dict[key])
    
# 출력하면
a 1
b 2
c 3

 

 

5. for key, value in dict.items() (딕셔너리 키-값 쌍 순회):

  • 딕셔너리의 (키, 값) 쌍을 동시에 순회
  • dict.items()는 딕셔너리의 (키, 값) 쌍을 반환
  • key, value는 각 쌍의 키와 값으로 할당
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
    print(key, value)
    
# 출력하면
a 1
b 2
c 3

 

 

6. for index, item in enumerate(list) (리스트 순회와 인덱스 함께 사용):

  • 리스트를 순회하면서 인덱스도 함께 사용할 수 있다
  • enumerate()는 리스트의 각 요소와 해당 요소의 인덱스를 함께 반환
  • 이 방식으로 인덱스와 값을 동시에 사용할 수 있다
my_list = ['a', 'b', 'c']
for index, item in enumerate(my_list):
    print(index, item)
    
# 출력하면
0 a
1 b
2 c

 

 

7. for item in set (집합 순회):

  • 집합의 각 요소를 순서대로 순회. 집합은 순서가 없는 자료형이므로, 순회 순서는 보장되지 않음
  • 집합 my_set의 각 요소를 순서대로 출력. 집합은 순서가 없기 때문에 출력 순서는 임의일 수 있음
my_set = {1, 2, 3}
for item in my_set:
    print(item)
    
# 출력하면
1
2
3

 

 

8. for item in zip(list1, list2) (여러 리스트를 동시에 순회):

  • 두 개 이상의 리스트를 동시에 순회할 때 사용
  • zip()은 여러 리스트를 병렬로 묶어서 각 요소를 동시에 순회
  • num과 letter는 각각 list1과 list2의 요소를 받음
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for num, letter in zip(list1, list2):
    print(num, letter)
    
# 출력하면
1 a
2 b
3 c

 

 

9. List Comprehension (리스트 컴프리헨션) (반복문을 한 줄로):

  • 리스트를 한 줄의 반복문을 통해 생성할 때 사용
  • 리스트 컴프리헨션은 간결하게 반복문을 작성하여 리스트를 생성할 수 있는 방법
  • 위 예시에서는 range(5)의 값을 제곱하여 리스트를 생성
squares = [x * x for x in range(5)]
print(squares)

# 출력하면
[0, 1, 4, 9, 16]

 

 

일단 이 정도만 적어두고 또 생기면 추가해야겠다

잊어버릴 만하면 들어와서 쓱 훑어봐야지