for ~ in ~ 형태의 반복문

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

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

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

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

 

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

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

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

 

 

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]

 

 

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

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