2023.09.11 - [분류 전체보기] - 파이썬 12 - 반복문
이전 게시글에서 배운 for는 컬렉션과 함께 쓰이는 경우가 대부분이다.
리스트와 for
li1 = ['apple', 'banana', 'orange', 'melon']
for i in li1:
print(i, end=' ')
리스트와 for를 사용한 탐색
score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
count = 0
for i in score:
if i >= 60:
count += 1
print(f'60점 이상인 학생의 수는 {count}명 입니다.')
딕셔너리와 for
dic1 = {'no1':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
for i in dic1.values():
print(i, end=' ')
print()
for i in dic1:
print(dic1[i], end=' ')
print()
for i in dic1.keys():
print(i, end=' ')
print()
for i in dic1:
print(dic1[i], end=' ')
print()
for i in dic1:
print(dic1.get(i), end=' ')
items() & 언패킹
person = {'name':'김사과', 'age':20, 'city':'서울'}
for key, value in person.items():
print(key, ':', value)
컴프리헨션(Comprehension)
컴프리헨션은 컬렉션을 간단하게 생성하거나 변형하는 방법중 하나이다.
반복문과 조건문을 사용하여 간결하게 컬렉션을 생성하며, 코드를 더 간단하고 가동성 좋게 작성할 수 있도록 도와준다.
리스트 컴프리헨션
result = [n(실제 리스트에 담기는 값) for n(arr에서 꺼낸 값) in arr]
n = 10
result = [0 for i in range(n)]
print(result)
result = [i for i in range(n)]
print(result)
result 는 리스트가 됩니다.
연산
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [n for n in arr]
print(result)
result = [n*n for n in arr]
print(result)
실제 리스트에 담기는 부분에는 어떤 변수든 값이든 리스트든 들어갈 수 있다.
위 처럼 연산식도 가능하다.
문자열
arr = ['apple', 'banana', 'orange', 'melon']
result = [len(string) for string in arr]
print(result)
result1 = [string for string in arr[0]]
print(result1)
문자열을 리스트로 변환할 경우 유용하게 사용된다.
조건식이 포함된 컴프리헨션
result = [n for n in range(10) if n%2 == 0]
# 조건식이면 다 가능
# for n in range(10) 먼저 -> 조건 -> n
조건식은 뒤에 붙는다. 반환값이 True 이거나 False이면 다 가능하다.
# 양수는 리스트에 그대로 저장하고, 음수는 0으로 변환해서 저장하기
arr = [-1, 0, -4, 24, 5, -10, 2]
# [0, 0, 0, 24, 5, 0, 2]
result = [n if n > 0 else 0 for n in arr]
print(result)
이중 for
# 이중 for 문과 컴프리헨션 비교
arr = []
for i in range(1, 4):
for j in range(1, 3):
arr.append(i * j)
print(arr)
# arr에 넣을값 i는 여기서 꺼내오고 j는 여기서 꺼내오고
arr = [i * j for i in range(1, 4) for j in range(1, 3)]
print(arr)
# 가독성이 좋지 않아서 잘 사용하지 않음.
이중 for로 리스트를 만드는 동작을 컴프리헨션으로 똑같이 구현할 수 있다. 하지만 가독성이 좋지 않기 때문에 잘 사용하지는 않는다.
세트 컴프리헨션
numbers = [1, 2, 3, 4, 5, 2, 3, 4]
unique_numbers = {x for x in numbers}
# 세트 컴프리헨션 -> {}
print(unique_numbers) # 세트라서 중복 x
리스트에 있는 값들을 세트로 변환하는 단순한 동작이지만 이러한 것도 가능하다.
딕셔너리 컴프리헨션
names = ['apple', 'banana', 'orange']
name_lengths = {name: len(name) for name in names}
# 딕셔너리 형태
print(name_lengths)
key : value 형태와 {}(중괄호)로 값을 넣는다면 딕셔너리를 만들 수 있다.
'파이썬 > 기본' 카테고리의 다른 글
[파이썬][응용]가위바위보게임 - random() 공부 (0) | 2023.09.11 |
---|---|
[파이썬] 랜덤 모듈 (0) | 2023.09.11 |
[파이썬] 반복문 (0) | 2023.09.11 |
[파이썬][응용]음악 추천 프로그램 - if 제어문 공부 (1) | 2023.09.06 |
[파이썬] 조건문 (0) | 2023.09.06 |
댓글