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 학원 강의 및 책 '혼자 공부하는 파이썬' ]
'Programming Language > Python' 카테고리의 다른 글
[Python] for 반복문과 range() 함수, 역반복문, 중첩 반복문, 피라미드 생성 (0) | 2024.03.02 |
---|---|
[Python] 딕셔너리 (dictionary), 요소 접근/추가/제거, 내부 키(key) 확인 (0) | 2024.03.01 |
[Python] 리스트(list)란, 리스트 연산, 리스트 정렬(sort), in 연산자 (2) | 2024.03.01 |
[Python] 조건문 | if ~ else와 elif 구문, pass 키워드 (0) | 2024.03.01 |
[Python] 조건문 | 불 자료형과 if 조건문, if 응용 문제 (짝/홀수 구분) (0) | 2024.03.01 |