사전캠프/TIL

[TIL] 250123 8일차: python 알아보기 14,15,16강

yssummer 2025. 1. 23. 17:53

 

에프 스트링이 신기해서 약간 신이 났다. 

 

파일 깨끗하게 둘로 나누는 거 좋다.

main_test랑 main_func로 나누는 거.

이렇게 다른 파일에 있는 것도 from import 구문으로 새 파일에 가져다 쓸 수 있는 거라서 

다른 사람이 만든 파이썬 파일을 다운받아서 내 작업물에 응용하고 뭐 하는 게 수월하다고 말하는 건가 싶음. 

 


 

15강. 파일 불러오기

    1. 여러개 파일로 분리하려면
    • main_test.py
    • 임포트 다음에 별 말고 다른 거 써도 된다. 특정 구문만 가져오고 싶으면 특정 구문만 써도 된다. 예를 들어 세이 하이 투만 가져오고 싶으면 별 대신 say_hi_to 라고 적으면 됨. 그치만 보통 별로 가져온다고 한다.
from main_func import *

say_hi()
def say_hi():
	print('안녕!')	
    
def say_hi_to(nave):
	print(f'{name}님 안녕하세요')
  • main_func.p

16강. 한줄의 마법

if문 - 삼항연산자 ( (참일 때 값) if (조건) else (거짓일 때 값) 으로 항이 3개라 삼항 연산자~)

    • 만약 조건에 따라 다른 값을 변수에 저장하고 싶다면?
    • 원래는 result에 짝 홀 각각을 담고 f 구문으로 프린트할 수 있다.
num = 3

if num%2 == 0:
    result = "짝수"
else:
    result = "홀수"

print(f"{num}은 {result}입니다.")

 

  • 축약버전으로 쓰면 result 안에 한 줄 식을 담고 f 구문을 프린트. 짝수라고 해라. 만약 2로나눈 나머지가 0이면. 아니면 홀수다. 이런 뜻.
num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

 

 

2. for문 - 한방에 써버리기

  • a_list의 각 요소에 2를 곱한 새로운 리스트를 만들고 싶다면?
  • (이거는 우리 레벨에서 자주는 안쓰지만 어디서 뭐 읽다가 마주칠 수 있으니 알아두는 정도라고 했음.)
  • 원래라면 이렇게 쓴다.
a_list  = [1, 3, 2, 5, 1, 2]

b_list = []
for a in a_list:
    b_list.append(a*2)

print(b_list)

 

  • 축약하면 이렇게 쓴다. a_list에 있는 애들이 나올 때마다 2를 곱해라 라는 뜻.
  • 수학 식같고 재미있네....
a_list  = [1, 3, 2, 5, 1, 2]

b_list = [a*2 for a in a_list]

print(b_list)

 

17강. map, filter, lambda식

 

맵 필터 람다!! 신기하다!!!! 

이것도 나중에 쓰기 위해 들어놓는다고 생각하라고 했음. 와 재밌다~~ 맵의 기능 설명을 들으니 정말 재밌군.,,,

(직접해보진않았다. 마치 배구경기보고 배구못하면서 좋아하는느낌;)

    1. map - 리스트의 모든 원소를 조작하기
  • 1단계
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}
]

{  } 요거 하나가 person인거고

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

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

result= 은 result 라는 변수에다 담는 것인거 알지?

map(check adult, people)까지만 쓰면 아직은 맵임. 그래서 리스트로 감쌈.

print(list(result)) 이렇게 써도 되고,

맵일때부터 감싸도 됨. list(map(check adult, people)) 일케

 

실행하면 결과가 

['청소년', '성인', ...] 이런식으로 나옴.

의미는:

피플 안을 하나하나 돌면서 체크 어덜트에다가 넣어라. 그리고 그 결과값 '성인'or''청소년'을

다시 리스트로 묶어라.

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

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

 

이 이후 람다식을 보여줄 수 있음.

(lambda x: x, people) 이게 람다 형태.

그러구 뒤에 있는 엑스에 식을 넣어줄 수 있음.

의미 : 피플을 하나씩 돌면서 엑스에다 넣을 건데, 그 엑스를 식에 담긴내용으로 리턴해라.

이걸 하는 이유는 한줄짜리면 끝나는 함수인데 굳이 def 써가면서 하지 않을 수 있도록 하려는것임.

 

수학 공식 배우는 늑낌~ 짜릿해~ (원래 공식 배울때가 재밌음 고난도문제 풀때는 눈물흘리면서..)

 

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

 

피플 안에 있는 엑스들을 하나하나 돌면서 이프구문을 적용한 결과값으로 배치한다, 그리고 그걸 리스트 형식으로 묶어서 꺼낸 것.

 

  1. filter - 리스트의 모든 원소 중 특별한 것만 뽑기
    • map과 아주 유사한데, True인 것들만 뽑는 기능임.
  • 필터가 맵보다 더 직관적이고 좀 더 자주 쓰게 될 수 있다고 했음.
result = filter(lambda x: x['age'] > 20, people)
print(list(result))

 

result 로다가 filter를 뭐 하냐면  lambda x에이지20이상인 것만 해라.

피플 안을 돌면서 에이지가 20 이상인 개체만 뽑아서 리스트 형식으로 필터링하기.

그러면 이렇게 나옴. 

 {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, ...

 

 

 

끝.