일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 마이크로소프트
- 마이크로소프트 ai 스쿨 6기
- 마이크로소프트 ai 스클
- microsoft ai school 6기
- microsoft ai school
- 마이크로소프트 ai school 6기
- micsrosoft ai
- microsoft
- msai
- microsoft ai
- 마이크로소프트 ai 스쿨
- 마이크로소프트 AI
- MS
- Today
- Total
연랩
[Microsoft AI School 6기] 12/23(6일차) 정리 - Dictionary, Tuple, 함수 본문
[Microsoft AI School 6기] 12/23(6일차) 정리 - Dictionary, Tuple, 함수
parkjiyon7 2024. 12. 23. 17:57파이썬 기본 문법
컬렉션 자료형
딕셔너리
- 순서가 없는 컬렉션 자료형으로 각각의 요소는 {키:값} 형태로 저장됨
딕셔너리명 = {키1:값1, 키2:값2, 키3:값3, ...}
- 키는 중복할 수 없지만, 값은 중복이 가능함
리스트/배열과의 비교
- 리스트는 대괄호 -[], 딕셔너리는 중괄호 -{}
- 배열은 값은 나열, 딕셔너리는 키-값 순서쌍의 나열
- 배열에서의 값은 인덱스를 통해 값을 꺼낼 수 있음
- 딕셔너리는 키값을 통해 연결된 값을 얻을 수 있음
Dictionary 접근은 대괄호로 하며, 키값을 이용한다
없는 키값으로 접근할 경우, 에러가 생기는 것이 아니라, 키-값 쌍이 추가된다
다만 없는 값에 연산을 할 수는 없다
Dictionary 조작 함수
Dictionary는 여러 메소드를 상속 받기 때문에 이를 활용할 수 있다
1) keys()
2) items()
3) values()
keys()의 경우, 키값을 반환하여 주며, items()는 키-값 쌍을, values는 값만을 반환한다
list로 변경 또한 가능하다
또한, 두 개의 변수를 활용하여 각각 key와 value를 따로 받을 수 있다
for key, value in dictionary.items():
이 구문은 매 루프마다 dict의 키-값 쌍을 하나 꺼낸 다음
key, value 변수로 언패킹한다
4) pop(), popitem()
list와 유사하게 pop 사용이 가능한데, pop()과 popitem이 있다
이를 사용하게 되면 아래와 같이 나온다
pop은 키값을 사용하여 뽑는 것이며, popitems는 맨 뒤의 아이템을 pop 해준다
5) del()
항목 삭제하기
pop()과의 차이점
- pop()은 값을 지우면서 해당 값 반환
값을 사용하기 위해 변수에 받고, 동시에 딕셔너리에서 제외할 수 있음
- del은 항목을 삭제하기만 함
6) get()
get 메소드를 활용할 수 있는데,
이는 만약 key값이 없는 경우, 원래는 key error가 뜨게 되지만 그렇지 않고 None으로 리턴을 받아 코드 에러를 나타내고 싶지 않은 경우 사용한다
get()을 사용하여 코드를 구성하면 다음과 같이 할 수 있다
단어를 검색하는 프로그램을 구성해보면, 없는 단어(key)인 경우, get을 사용하여 에러가 나지 않고 처리할 수 있게끔 구성하였다
- Dictionary는 리스트 안에 존재할 수 있다
즉, list 안에는 숫자, 문자열, list, dictionary 등이 존재할 수 있다
리스트와 딕셔너리는 빈 채로 선언해도 에러가 나지 않는다
Dictionary 예시는 다음과 같다
ex)
list를 이용하면 깔끔하게 출력할 수 있기 때문에 출력 시에 사용하는 것을 추천한다
이름을 key로 전화번호라는 value를 찾아올 수 있는 프로그램을 구현하면 위와 같다
any(iterable)
iterabel의 요소 중 어느 하나라도 참이면 True를 돌려준다. iterable이 비어 있으면 Flase를 돌려준다
any()와 dictionary를 사용하여 코드를 구성하면 다음과 같다
튜플 자료형
- 리스트와 마찬가지로 여러 데이터를 하나로 묶어 저장하는 자료의 집합
- 인덱싱과 슬라이싱 가능
- 초기화 후 편집 불가(immutable)
- 소괄호 사이에 각각의 요소를 컴마로 구분해서 입력
ex) (90, 70, 'python', [1, 2, 3], 3.14)
- 소괄호 없이 값만 나열해도 가능
- 요소 하나의 튜플을 만드는 경우, 값 뒤에 콤마를 넣어 튜플임을 나타냄
- 튜플 안의 튜플, 리스트 등 가능
- 튜플 +와 * 연산자 가능
ex) (1, 2, 3, 4, 5) + (1, 2) => (1, 2, 3, 4, 5, 1, 2)
단, 이 때에는 새로운 튜플이 생기는 것이다
시퀀스 자료형
- 리스트 ex) [0, 1, 2, 3, 4]
- 튜플 ex) (3, 4, 5, 6)
- range ex) range(5)
- 문자열 ex) 'Hello'
- 키 값이 없어도 인덱스로 접근 가능
- dictionary는 순서 보장이 불가능하기 때문에 key로 접금
- range로 생성된 숫자는 리스트나 튜플로 만들어 사용 가능
- range() 함수가 반환하는 객체는 list나 tuple처럼 for로 순환할 수 있는 타입의 값임: Iterable임
- range 자체로는 그 안의 값을 볼 수 없음(시작 주소를 보유)
- 즉, range는 tuple, list 등을 통해 변환 해주어야 정식 시퀀스 자료형이 될 수 있다(내부의 내용을 볼 수 이음
range 참고
- 파이썬에서 Sequence 타입은 0 또는 그 이상의 유한한 갯수의 원소가 순서를 가지고 나열된 집합/배열과 유사한 자료구조를 의미
- range 타입은 실제 전체 값이 들어있는 자료구조를 반환하지 않고, 값이 필요할 때마다 다음 값을 계산하여 생성하는 방식을 사용- > 갯수가 유한한지 알 수 없습니다.
=> Sequence가 아님
시퀀스 자료형의 공통기능 - in
- 시퀀스 객체 안에 특정 값이 있는 지 확인하는 방법: in 연산자
- 시퀀스 객체에 특정한 겂이 있으면 True 반환
- not in 도 존재
ex)
>>> list01 = [10, 20, 30, 40]
>>> 30 in list01
>>> True
>>> 30 not in (1, 2, 3, 4, 5)
>>> True
>>> 60 in range(100)
>>> True
함수와 클래스
함수(function)
특정 동작을 수행하는 일정한 코드의 모임(기능적 단위)
- print(), input() 등 다양한 내장함수 존재
- 내장함수와 사용자 정의 함수가 존재
함수를 정의하는 것은 자료(매개변수)를 받아서, 결과(반환 값)를 만들어주는 상자를 만드는 것
함수의 이점
- 가독성: 파이썬 스크립트를 읽기 쉽게 해줌
- 재활용성: 반복되는 여러 개의 명령을 하나로 묶음->재활용성 향상
함수 사용이 반드시 성능을 향상시킬 수 있다고 할 수는 없음
내장 함수
- 파이썬은 프로그래밍을 편리하게 할 수 있도록 미리 만들어진 함수를 제공
- 별도의 설치과정 없이, 파이썬을 설치하면 바로 사용할 수 있는 함수
- 내장 함수의 사용이 반복문보다 속도가 빠를 가능성이 높다
- 자주 사용되는 함수
- print()
- del()
- type()
- input()
- range()
- str()
del vs pop vs remove
- pop의 경우 리턴값이 있으나 del은 없음
아래의 코드를 입력하면 파이썬 내장 함수 목록을 볼 수 있다
또한, 아래의 링크에서도 파이썬 내장 함수에 대해 공부할 수 있다
파이썬 표준 라이브러리 — Python 3.13.1 문서
사용자 정의 함수
함수는 def 키워드를 통해 정의
1) 함수 이름
2) 매개변수
3) 수행할 명령
4) 반환 값
매개 변수와 반환 값은 없을 수 있다
함수명을 출력하여 보면 다음과 같이 나오는데, 이는 함수의 시작값이라고 볼 수 있다(pointer)
또한, 함수를 호출하고 있은 경우,
함수명()
와 같이 하여야 한다
매개 변수의 경우, 별도의 선언 없이 사용이 가능하다
리턴 값이 있는 함수의 경우, 호출하면 다음과 같다
리턴 값의 경우, 매개변수에 저장할 수 있다
매개변수와 리턴값이 모두 있는 경우 아래와 같이 나타난다
유의해야 할 점이 한가지 있는데, 위의 경우, 리턴 값이 두개라는 착각을 할 수 있으나, 사실 튜플이 하나 반환 된 것이다.
이에 대해서는 추후에 다시 알아보겠다
몇가지 사용자 정의 함수의 예를 살펴보면 다음과 같다
ex)
위는 윤년을 확인하는 함수를 구현한 것이다.
4로 나누어 떨어지면 윤년, 100으로 나누어 떨어지면 윤년이 아니고, 400으로 나누어 떨어지면 윤년이라고 한다
여러 개의 입력을 받는 함수
def 함수명 (*args)
들어오는 인자들을 tuple로 패킹하기 때문에 인자 수가 상관이 없다
ex)
add_many(1, 2)이면 3
add_many(1, 2, 3)이면 6
등 여러 인자들을 다 더하는 함수 add_many
사진에서 알 수 있듯이 tuple로 패킹 됨을 알 수 있다
이를 출력하여 보면 다음과 같다
다음의 예시를 살펴 보자
이때, 인자를 반대로 지정하면 에러가 나는데, 그 이유는 어디까지 args로 받을 지 모르기 때문이다.
함수를 선언할 때에는 문제가 되지 않으나 사용을 할 때에는 문제가 생긴다
그러나 choice = 'add' 처럼 직접 정해주면 문제가 생기지 않는다.
즉, 위의 사진과 같은 경우에는 문제가 일어나지 않는다
또한 여러 개의 인자를 리턴 받는 것처럼 보이지만 튜플로 리턴 되는 것이므로 리턴 값을 각각 의 변수에 저장할 수 있다
따라서 위 사진의 result1과 result2가 각각 합과 곱으로 저장되는 것이다
위 사진에서 또한 리턴 값이 여러 개 인 것처럼 보이지만,
(add, minus, multi, divi)라는 튜플이 리턴된 것과 같은 것이다
따라서 위 사진과 같이 리턴 값을 각각의 변수에 담아 저장할 수 있다
오늘의 간단한 후기
함수 선언 부터 변수까지 기존에 알던 문법과 달라서 어색했다. 그래도 리턴을 튜플로 해서 여러 개의 값을 사용할 수 있는 것은 파이썬의 큰 장점 중에 하나라고 생각했다. 그 밖에도 다양한 내장 함수들이 파이썬에 있어 비교적 편리하게 이용할 수 있는 점도 메리트라고 생각했다. 그 밖에 range라고 하는 새로운 개념을 접해 신기했다
출처
[1] Python Software Foundation, "Python 3.13 library reference," Python Documentation, 2024. Available: https://docs.python.org/ko/3.13/library/index.html. Accessed: Dec. 18, 2024.
-If any problem for references, or any questions please contact me by comments.
-This content is only for recording my studies and personal profiles
일부 출처는 사진 내에 표기되어 있습니다
본문의 내용은 학습과 개인 profile 이외의 다른 목적이 없습니다
출처 관련 문제 있을 시 말씀 부탁드립니다
상업적인 용도로 사용하는 것을 금합니다
본문의 내용을 Elixirr 강의자료 내용(인선미 강사님)을 기반으로 제작되었습니다
본문의 내용은 MS AI School 6기의 강의 자료 및 수업 내용을 담고 있습니다.
'MS AI school 6기' 카테고리의 다른 글
[Microsoft AI School 6기] 12/27(8일차) 정리 - NumPy, Pandas (3) | 2024.12.27 |
---|---|
[Microsoft AI School 6기] 12/24(7일차) 정리 - 내장 함수, 람다 함수, 모듈, 클래스 (2) | 2024.12.24 |
[Microsoft AI School 6기] 12/20(5일차) 정리 - 반복문, list (1) | 2024.12.20 |
[Microsoft AI School 6기] 12/19(4일차) 정리 - 파이썬 기본 문법(입력, 출력, 조건문 등) (3) | 2024.12.19 |
[Microsoft AI School 6기] 12/18(3일차) 정리 - Git, GitHub 설치, 연결, 사용 (3) | 2024.12.18 |