| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 2주차
- WHERE절
- 파이썬
- channels
- 정보처리기사실기
- 장고
- Commpot
- 알고리즘
- 프로젝트
- Git
- resnet50
- github
- 프로그래머스
- 백준
- 정보처리기사
- 개발일지
- Class
- 가상환경
- 1주차
- sql
- WebSocket
- vscode
- poetry
- re-id
- 채팅
- REDIS
- 미니프로젝트
- js
- WIL
- 마스킹
Archives
- Today
- Total
개발일기
#5 파이썬 연습 (map, filter, lamda, class) 본문
Content
- 새로 알게된 내용
- 내맘대로 활용하기
- 느낀 점
1. map : 리스트의 모든 원소를 조작
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
def check_adult(person):
return '성인' if person['age']>20 else '청소년'
result = map(check_adult, people)
print(list(result))
출력: ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
map은 people 리스트를 check_adulft에 하나씩 넣고, 그 값을 리스트로 출력
그런데 lambda를 사용하면 함수를 안 쓰고도 출력할 수 있다!
2. lambda
result = map(lambda person: ('성인' if person['age']>20 else '청소년'), people)
print(list(result))
출력: ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
people 리스트를 person에 넣고 ()를 실행하라는 의미
3. filter : 리스트의 모든 원소 중 특별한 것만 뽑기
result = filter(lambda x :x['age']>20, people)
print(list(result))
출력: [{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}] 20살 넘는 사람만 뽑음..!
4. class : 객체지향적, 많은 몬스터들의 hp 관리를 몬스터마다 각자 하도록!
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp <0:
self.alive = False
def status_check(self):
if self.alive:
print('살았다!')
else:
print('죽었다!')
m1 = Monster()
m1.damage(150)
m1.status_check() #죽었다!
m2 = Monster()
m2.damage(90)
m2.status_check() #살았다!
내 맘대로 활용하기 : 집순이 테스트를 만들어보았어요!
class JipsooniTest():
like = 100
alive = True
def jip(self, hate):
self.like = self.like - hate
if self.like <40:
self.alive = False
def status_check(self,name):
if self.alive:
if self.like>60:
print(f'{name}님은 진정한 집순이십니다. 환영해요 :)')
else:
print(f'{name}님! 집순이가 적성에 맞을지도 몰라~')
else:
print(f'죄송하지만.. {name}님께서는 집순이라 하실 수 없어요...ㅠ (숙연)')
test1 = JipsooniTest()
#질문: 하루종일 집에만 있으라고 하면 너는 어때? 싫은 정도를 0부터 100까지 숫자 중에서 골라줘
test1.jip(80)
#이름을 입력해주세요.
test1.status_check('김지수')
test2 = JipsooniTest()
test2.jip(30)
test2.status_check('김지원')
출력:
죄송하지만.. 김지수님께서는 집순이라 하실 수 없어요...ㅠ (숙연)
김지원님은 진정한 집순이십니다. 환영해요 :)
좀 더 개선해보자!
일일이 test에 숫자랑 이름을 입력하는 게 번거로운 작업인 것 같다. 더 편리하게 할 수 없을까.. 더 짧게 만들 수 없을까..
함수를 이용해서 코드를 더 짧게 수정했습니다.
def test(number,name):
test1=JipsooniTest()
test1.jip(number)
test1.status_check(name)
hate = input("하루종일 집에만 있으면 어때? 싫은 정도를 0부터 100까지 숫자 중에 표현해줘~")
name = input("이름을 적어줘~")
test(int(hate), str(name))
이렇게 숫자랑 이름을 함수에 입력하면 바로 값이 나오는 것으로 코드를 줄여보았습니다.
느낀 점:
- 지금까지 배운 내용들을 가지고, 간단하지만 재밌는 Test들을 만들어보는 경험은 즐겁다.
- 더 배워보고 싶다~
'오늘의 공부일기 > 파이썬 공부일기' 카테고리의 다른 글
| #7 파이썬 연습 (모듈 및 패턴) (0) | 2023.03.23 |
|---|---|
| #6 파이썬 심화 (가상환경, 코드 컨벤션, 변수 유효 범위) (0) | 2023.03.23 |
| #4 파이썬 연습 (예외처리, 파일 불러오기, 한 줄의 마법) (0) | 2023.03.21 |
| #3 파이썬 연습 (튜플, 집합, f-string) (0) | 2023.03.21 |
| #2 파이썬 연습 (for문, if문, 함수) (0) | 2023.03.21 |