23.03.20(python 기초문법)

Vinyl Stage·2023년 3월 20일
0

개발일지

목록 보기
12/42

새로 알게된 내용을 중점적으로 정리해보자

f-string은 문자열을 좀더 직관적으로 볼수있게 해준다.

예제로

players = [
	{'name':'James','age':12},
    {'name':'Mark','age':25},
    {'name':'Carl','age':27},
    {'name':'Jonh','age':14},
    {'name':'Michael','age':32},
    {'name':'Carlos','age':12},
    {'name':'Tom','age':46},
    {'name':'King','age':36}
    ]

이 딕셔너리에서 for loop로 리스트를 뽑고

for p in players:
	name = p['name']
    age = p['age']
    print(name, age)

로 리스트만 뽑을수도 있지만
'누구의 나이는 몇입니다.'라고 하고싶다면

for p in players:
    name = p['name']
    age = str(p['age'])
    print(name+"의 나이는"+age+"살 입니다.")

이렇게 사용할수도 있겠지만!
f-string을 사용하면 훨씬 편하게 사용할 수 있다.

for p in players:
    name = p['name']
    age = str(p['age'])
    print(f'{name}의 나이는 {age}살 입니다.')

결과값은 똑같다.

여기서 try except를 사용해보자면

players = [
    {'name': 'James', 'age': 22},
    {'name': 'Mark', 'age': 25},
    {'name': 'Carl', 'age': None},
    {'name': 'Jonh', 'age': 34},
    {'name': 'Michael', 'age': None},
    {'name': 'Carlos', 'age': 12},
    {'name': 'Tom', 'age': 46},
    {'name': 'King', 'age': 36}
]


for p in players:
    name = p['name']
    age = p['age']
    try:
        if age < 20:
            print(f'{name} is underage')
        elif age > 20:
            print(f'{name} is adult')
    except:
        print(f'{name}, plz enter your age')

요런식으로 짜봤을 때
나이가 20보다 적을시에는 미성년자라고 나오게 하고 더 많을시에는 성인이라고 나오게 되는데 그게 아니면(입력이 누락되었으면) 나이를 입력하라고 출력하게 된다.


마지막으로 map, filter, lambda를 보자

players = [
    {'name': 'James', 'age': 22},
    {'name': 'Mark', 'age': 25},
    {'name': 'Carl', 'age': 17},
    {'name': 'Jonh', 'age': 34},
    {'name': 'Michael', 'age': 15},
    {'name': 'Carlos', 'age': 12},
    {'name': 'Tom', 'age': 46},
    {'name': 'King', 'age': 36}
]


def check_adult(person):
    if person['age'] > 20:
        return '성인'
    else:
        return '미성년자'


result = map(check_adult, players)
print(list(result))

map을 사용하면 내용을 바꿀 수 있는데

출력하면

이런식으로 출력된다.
반복문으로 하나하나 바꿀수 있는것을 이런식으로 사용하면 훨씬 간단하게 할 수있다.

이 players를 하나하나 돌면서 check_adult에 넣고 20이 넘으면 '성인'으로 return 그게 아니면 '미성년자로' return값을 가지고 result라는 변수에 넣어서 list로 뽑는것이다.

이 코드를 좀더 간단하게 바꾸면

def check_adult(person):
	return '성인' if person['age'] > 20 else '청소년'

으로 짤 수 있다

더 쉽다는 lambda로 짜보자

result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), players)
print(list(result))

이러면 한줄짜리 코드가 된다.

결과값은 같다.

여기서 20보다 큰값만 가져오게 된다면 filter를 씌워주면 된다.

result = filter(lambda x: x['age'] > 20, players)

보기가 흉하기때문에 pprint를 사용해보자

상단에

from pprint import pprint

를 넣어주면

아주 예쁘게 잘 나온걸 볼 수있다.

오늘 배운내용 여기까지

profile
Life is Art

0개의 댓글