짜리몽땅 매거진
[Python] 딕셔너리 set/def/lambda 본문
set, def, lambda 를 활용한 딕셔너리 표현
set 함수 : 중복값을 제거해주는 함수
number=[1,2,3,4,5,5,5]
number
[1, 2, 3, 4, 5, 5, 5]
set(number) #set함수는 딕셔너리로 출력
{1, 2, 3, 4, 5}
합집합, 교집합, 여집합, 차집합 등으로 응용 가능
a={1,2,3,4,5}
b={4,5,6,7,8}
a|b #합집합
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_4032\3331476000.py in <module>
----> 1 a|b #합집합
TypeError: unsupported operand type(s) for |: 'list' and 'list'
a&b #교집합
{4, 5}
함수
반복되는 경우 , 길어지는 경우 계속 동일한 코드를 사용하면 에러 날 확률이 높다.
한 번 만들어 놓으면 계속 불러서 쓸 수 있다.
numpy.mean(1+2) #mean함수(평균을 구하는 함수) 는 numpy를 먼저 호출해야 사용 가능하다. 이외에 분산, 표준편차를 구하는 함수도 마찬가지
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_4032\3518666119.py in <module>
----> 1 numpy.mean(1+2)
NameError: name 'numpy' is not defined
import numpy as np
np.mean(1+2)
3.0
def 함수이름()
코드
def kuk():
print('안녕하세요')
print('저는')
print('국준호입니다')
kuk() #위에서 def를 통해 함수를 지정했으므로 따로 프린트하지 않고 함수만 호출하면 된다.
안녕하세요
저는
국준호입니다
def jun(a,b,c):
print(a+b)
print(b-c)
print(a*b*c)
jun(10,9,8)
19
1
720
return을 통해 값 반환하기
def f(x):
return x+2
f(2)
4
#print와 return의 차이
#print는 단순히 출력값을 보여주는 기능
#return은 함수에 대한 반환값을 지정
def f(x):
return x+1
print(f(1)) #f(1)을 출력해야하므로 함수 호출-->1 대입-->결과값 2 반환-->최종적으로 f(1) 출력
2
def f(a,b,c):
return a+b,a+c,a*c,b/c
f(4,5,2)
(9, 6, 8, 2.5)
람다 표현식
람다는 함수를 간편하게 작성할 수 있게 만드는 것
좀 더 간결하게 만드는 것
lambda 매개변수 : 식
x=lambda a:a+200
x(100)
300
(lambda a:a+200)(100) #뒤에(인수)를 표기하면 바로 출력 가능
300
(lambda a:a+200)(100,200) #인수가 1개 일때만 소괄호를 쓴다.애초에 오류임
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_4032\3464615822.py in <module>
----> 1 (lambda a:a+200)(100,200) #인수가 1개 일때만 소괄호를 쓴다.
TypeError: <lambda>() takes 1 positional argument but 2 were given
a=set(map(lambda a:a+200,[100,200])) #set,map, list를 모두 사용할 수도 있다.
a
{300, 400}
* 추가 과제1
저번시간에 배운 리스트 적용되는 것들을 테스트해보자
할당, 복사 반복문, 리스트컴프리헨션 가능
최소 3개 이상씩 딕셔너리로 적용시켜서 코드 만들고 주석처리하기
할당
a=b={'일':1,'이':2,'삼':3,'사':4,'오':5}
a
{'일': 1, '이': 2, '삼': 3, '사': 4, '오': 5}
b
{'일': 1, '이': 2, '삼': 3, '사': 4, '오': 5}
a['삼']=300
a
{'일': 1, '이': 2, '삼': 300, '사': 4, '오': 5}
b #할당은 a의 값만 바꿔도 b도 똑같이 적용됨.
{'일': 1, '이': 2, '삼': 300, '사': 4, '오': 5}
복사
c=a.copy()
c
a['삼']=400
a
{'일': 1, '이': 2, '삼': 400, '사': 4, '오': 5}
b #이처럼 b는 값이 같이 바뀌지만
{'일': 1, '이': 2, '삼': 400, '사': 4, '오': 5}
c #copy 즉, 복사한 c의 경우 바뀌지 않음.
{'일': 1, '이': 2, '삼': 300, '사': 4, '오': 5}
리스트 컴프리헨션
국준호=['국','준' ,'호']
국준호
['국', '준', '호']
브다=[1,2,3]
브다
[1, 2, 3]
a={i:j for (i,j) in zip(국준호, 브다)} #zip()함수를 사용하는 이유: 여러객체를 조합하여 순서대로 요소를 묶을 때 유용하게 사용 가능
a
{'국': 1, '준': 2, '호': 3}
* 추가 과제2
나머지 합집합 교집합을 제외한 집합들을 코드로 만들어주시고 주석으로 정리해 주세요!!
차집합
a = {1,2,3,4}
b = {4,5,6,7}
a-b
{1, 2, 3}
대칭차
a^b
{1, 2, 3, 5, 6, 7}
'Data > Python' 카테고리의 다른 글
[Python] 정규표현식 (0) | 2023.08.14 |
---|---|
[Python] if, for문 응용한 퀴즈 만들기 (0) | 2023.08.03 |
[Python] 문자열 데이터 응용 (0) | 2023.07.19 |
[Python] 2차원 리스트&문자열 (0) | 2023.07.19 |
[Python] 리스트 컴프리헨션, 2차원 리스트 (0) | 2023.07.19 |