본문 바로가기
학부 자료/Python

[Python] 파이썬 기초 10/20, 람다 표현식(lambda expression)

by jackMK 2023. 11. 7.

<내용정리>


- 관련 파일

10일차_221207.py
0.00MB


- 본문

## 람다 표현식(lambda expression) : 익명 함수
<형식>
lambda 매개변수들 : 식

# 일반적인 방법
def plus_ten(x):
    return x + 10

a = plus_ten(1)
print('def 사용했을 때 : ', a)

# lambda 사용
b = lambda x: x + 10
print('lambda 사용했을 때 : ', b(1))

print((lambda x: x + 10)(2))

## map() : 리스트의 요소를 각각 처리
반복 가능한 자료형(리스트나 튜플)을 첫번째 인자로 들어온 함수에
하나씩 집어넣어서 함수를 수행하는 함수

map 함수의 반환값은 map객체이기 때문에 해당 자료형을 list 혹은 tuple로 형변환 시켜주어야한다

<형식>
map(함수, 반복 가능한 객체)
map(적용시킬 함수, 적용할 값들)

# 일반적인 방법
def plus_one(x):
    return x + 1

a = list(map(plus_one, [1, 2, 3]))
print('def 사용 : ', a)

# lambda 사용
b = list(map(lambda x: x + 1, [1, 2, 3]))
print('lambda 사용 : ', b)

## 람다 표현식에 조건부 표현식 사용하기
<형식>
lambda 매개변수들 : 식1(참) if 조건식 else 식2(거짓)

*else는 반드시 있어야 하며, elif는 올 수 없다. if를 연속해서 사용한다

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = list(map(lambda x: str(x) if x % 3 == 0 else x, a))
print(b)

## filter()
반복 가능한 객체에서 특정 조건에 맞는 요소 중 참일 때만 해당 값을 가져오는 함수
<형식>
filter(함수, 반복 가능한 객체)

def f(x):
    return 5 < x < 10
a = [8, 3, 2, 10 ,15, 7, 1, 9, 0, 11]
result = list(filter(f, a))

print(result)

# 모듈을 불러와서 사용하기
<형식>
import 모듈이름 as 별칭 # as 별칭은 생략 가능
또는
from 모듈이름 import 모듈함수
>> 모듈이름을 생략하고 함수만 쓰고 싶을 때

from 모듈이름 import *
>> 모듈 안에 있는 모든 함수를 당겨쓸 때 모두의 의미를 가진 *를 사용

# import 방식
import m  # m 이라는 파이썬 파일을 불러온다
print(m.add(1, 2))
print(m.sub(2, 1))
print(m.mul(1, 2))
print(m.div(2, 1))

# from 방식1
from m import add, sub
print(add(1, 2))  # from으로 가져올 땐 모듈명(m.)이 필요없다
print(sub(1, 2))

# from 방식2
from m import *
x = int(input('x를 입력하세요 : '))
y = int(input('y를 입력하세요 : '))

n1 = add(x, y)
n2 = sub(x, y)
n3 = mul(x, y)
n4 = div(x, y)

print('x + y =', n1)
print('x - y =', n2)
print('x * y =', n3)
print('x / y =', n4)

# return한 결과값 n1, n2가 다시 매개변수로 들어간다
print('n1 + n2 =', add(n1, n2))
# return한 결과값 n3, n4가 다시 매개변수로 들어간다
print('n3 - n4 =', sub(n3, n4))

## 패키지(폴더)를 만들어서 관리
<형식>
import 패키지명.모듈이름 as 별칭
또는
from 패키지명.모듈이름 import 모듈함수

from pkg.m import add  # pkg 폴더 안 m모듈 안에 있는 add함수를 불러온다
print(add(1, 2))

## __name__
현재 모듈의 이름을 담고 있는 내장변수
원래 파일에서 실행하면 __name__ 에 '__main__'이 할당된다
모듈로 참조하고 있는 다른 파일에서 실행하면 __name__에 해당 모듈명이 할당됨

# ex)
'''   --my_secure 파일에--
def secure_name(name):
    return name[0] + '**'

def secure_no(no):
    return no[:8] + '******'

def secure_phone(phone):
    return phone.replace(phone[4:8], '****')
'''

from my_secure import *
print(secure_name('김철수'))
print(secure_no('751012-1234567'))
print(secure_phone('010-1234-5678'))

### 표준 모듈
## math 모듈
import math
print(math.pi)  # 원주율
print(math.ceil(1.1))  # 올림
print(math.floor(1.9))  # 내림
print(math.trunc(-1.9))  # 버림
print(math.sqrt(81))  # 제곱근
print(math.pow(2, 3))  # 2의 3제곱

## random 모듈
import random
print(random.randint(1, 10))  # 1이상 10 이하의 정수 중 RANDOM
print(random.randrange(10))  #0부터 9까지의 정수 중 RANDOM
print(random.randrange(1, 10))  # 1~9 중 RANDOM(range는 끝값 포함 X)
print(random.randrange(1, 10, 2)) # 1, 3, 5, 7, 9 중 RANDOM
print(random.random())  # 0 이상 1 미만 중 RANDOM(소수점)

seasons = ['spring', 'summer', 'autumn', 'winter']
print(random.choice(seasons))

print(random.sample(range(1, 46), 6))  # 중복 없이 6개의 숫자를 리스트 형태로 출력

my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)

# ex)
import random
num1 = random.randint(1, 10)
num2 = random.randint(1, 10)

print(f'{num1} + {num2} = ?')
dab = int(input('정답은 무엇입니까? '))

if num1 + num2 == dab:
    print('정답!')
else:
    print('오답!')

# ex)
import random
dice = random.randint(1, 6)
while True: # 맞출 때까지 무한반복
    user = int(input('주사위 값은 얼마일까요? :'))
    if dice == user:
        print('정답입니다!')
        break
    else:
        print('오답입니다')

loading