1. for 반복문

 

🚀   값의 범위나 횟수가 정해져 있을 때 사용하면 편리한 반복문

🚀  for 반복문은 리스트에 있는 요소 하나하나가 변수에 들어가며 차례차례 반복하게 됨

       ➡️  print() 함수로 출력하게 되면 리스트 요소가 차례차례 출력됨
🚀   반복가능객체 ?
        a. 시퀀스 sequence 자료형 : 순서를 가지고 있는 자료형 ( 문자열, 리스트, 튜플, range )
        b. 비시퀀스 non-sequence 자료형 : 순서를 가지고 있지 않은 자료형 ( 세트, 딕셔너리 )

# 기본 구조 
for 변수 in 반복가능객체 :
    반복실행문

 

1) 문자열

for ch in 'Hello':  # 문자열 내부의 문자를 하나씩 꺼내서 사용할 수 있음
    print(ch)
    
'''    
실행결과)
H
e
l
l
o
'''

 


 

2) 리스트

for item in ['가위', '바위', '보']:
    print(item)

# 인덱스 번호 사용 1) 변수생성. 비추천
n = 0
for item in ['가위', '바위', '보']:
    print(f'{n} {item}')
    n += 1

# 인덱스 번호 사용 2) enumerate() 사용. 추천
li = ['가위', '바위', '보']
for i, v in enumerate(li):  # i:index, v:요소의 값 value
    print(f'{i} {v}')

실행 결과

 


 

3) 리스트 내포

# 기본형식
리스트 = [표현식 for 변수 in 반복가능객체]
li = [n * 2 for n in [1, 2, 3]]
print(li)  # [2, 4, 6]

# 조건에 맞는 데이터만 추출 가능
# 리스트 = [표현식 for 변수 in 반복가능객체 if 조건식]
li = [n * 2 for n in [1, 2, 3, 4, 5]]
print(li)  # [2, 4, 6, 8, 10]

li = [n * 2 for n in [1, 2, 3, 4, 5] if n % 2 == 1]  # 1, 3, 5만 추출
print(li)  # [2, 6, 10]

# 리스트 내포를 사용하지 않으면
li = []
for n in [1, 2, 3, 4, 5]:
    if n % 2 == 1:
        li.append(n * 2)
print(li)

 


 

4) 세트 set

👩🏻‍💻  수학의 집합 개념을 구현한 자료형
👩🏻‍💻  저장된 값들은 순서가 없기 때문에 인덱싱과 슬라이싱을 사용할 수 없음
👩🏻‍💻  대신 중복된 값의 저장이 불가능해서 중복 제거용으로 사용

 

    ⚡️  특징
        a. 중복된 값을 저장할 수 없음
        b. 저장되는 순서가 없음

# 중괄호({}) 또는 set() 함수를 이용하여 생성
li = [1, 1, 2, 2, 3, 3]
print(li)  # [1, 1, 2, 2, 3, 3]
print(set(li)) # {1, 2, 3}
li = list(set(li))  #중복된 값을 제거
print(li) # [1, 2, 3]
# 추가를 할 때 add() 메소드 사용
s = {10, 20, 30}
s.add(40) # 세트에 40을 추가
print(s) #{40, 10, 20, 30} / 저장된는 요소들은 순서가 없음

# 삭제를 할 때는 remove()나 discard() 메소드 사용
s.remove(20) # 세트에서 20을 제거. 20이 없으면 오류가 발생
print(s) # {40, 10, 30}

s.discard(30) # 세트에서 30을 제거. 30이 없어도 오류가 발생하지 않음
print(s) # {40, 10}

 

📌  for 반복문과 세트

# 기본형식
for 요소 in {세트}:
    반복실행문
for item in {'가위', '바위', '보'}:  # 순서가 지켜지지 않음
    print(item)

# 실행결과
# 바위
# 보
# 가위

 


 

5)  딕셔너리  

  👾  key와 value의 조합이라 다른 자료형과 다른 방식으로 사용을 함 (키만 출력)

person = {'name': '에밀리', 'age': 20}
for item in person:
    print(item)  # name age

# value 출력
for key, value in person.items():
    print(f'{key}:{value}')

for key in person:
    print(person[key])  # 에밀리 20

for key in person:  # get() 메소드를 이용해서 해당 key에 해당하는 value를 가져옴
    print(person.get(key))  # 에밀리 20

# 영어사전을 딕셔너리 자료형으로 구현하고
# 영어 사전에 등록된 모든 단어와 그 단어의 의미를 출력
eng_dict = {
    'sun': '태양',
    'moon': '달',
    'star': '별',
    'space': '우주'
}
for word in eng_dict:
    print(f'{word}의 뜻: {eng_dict.get(word)}')
    print(f'{word}의 뜻: {eng_dict[word]}')

 


 

2. 중첩 리스트와 중첩 반복문

 

🚀  반복문을 여러 겹 중첩해 사용하면 중첩 반복문

🚀  [1,2,3] 처럼 리스트가 한 겹으로 감싸진 리스트를 1차원 리스트

🚀  [[1,2,3], [4,5,6], [7,8,9]] 처럼 두 겹으로 감싸진 리스트를 2차원 리스트

 

# 2차원 리스트 반복문 한 번 사용
list_of_list = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8]
]

for items in list_of_list:
    print(items)
    
'''
실행결과)
[1, 2, 3]
[4, 5, 6]
[7, 8]
'''
# 2차원 리스트 반복문 두 번 사용
list_of_list = [
    [1, 2, 3]
    [4, 5, 6]
    [7, 8]
]

for items in list_of_list:
    for item in itmes:
        print(item)
'''
실행결과)
1
2
3
4
5
6
7
8
'''

 


 

3. 전개 연산자

 

🚀  전개 연산자를 사용하면 리스트 내용을 전개해서 입력할 수 있다.

🚀  리스트 내부와 함수의 매개변수 위치에 사용

# 리스트 내부에 사용하는 경우
a = [1, 2, 3, 4]
b = [*a]  # [1, 2, 3, 4]
c = [*b, 5]  # [1, 2, 3, 4, 5]
# -> b 내용에 어떠한 영향도 없이 새로운 리스트 c가 만들어짐

# 함수 매개변수 위치에 사용하는 경우
a = [1, 2, 3, 4]
print(*a)  # 1 2 3 4

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 '혼자 공부하는 파이썬' ]

+ Recent posts