[TIL] 2025.01.06(월) - python 학습
금일 학습내용
1. 함수
2. 시퀀스 자료형
2-1. list
2-2. tuple
2-3. dict
2-4. set
각 학습별 상세내용
1. 함수 |
▪︎ 함수
- 단독 모듈이라 그냥 호출하여 사용이 가능 하다.
- 예) print(), int(), input(), ...
▪︎ 메서드
- 함수의 클래스 안에 속해 있고 클래스의 멤버 션수들을 이용해서 구현된 것이다.
- 단독으로 사용할 수 없다.
- 예) text.count("a"), text.index("a"), ...
input() 함수
▶ input() 결과는 문자열(string, str) 이다.
- 숫자를 넣어도 type() 으로 확인해 보면 str으로 출력된다.
- 입력 받은 후 문자열 이외의 값으로 처리할 때는 꼭 형변환 해주어야한다!!
▶ 변수 2개 이상 입력받을 수 있다.
예) num1, num2 = input(), input()
예) num3, num4 = input().split()
map() 함수
▶ 요소들을 매핑해준다.
예) num1, num2 = map(int, input().split(",")
→ input함수의 출력물들을 int로 형변환해서 각 변수에 할당해준다.
* 용어 *
- 래거시코드 : 누군가 남겨두고간 코드
- 리팩토링 : 결과의 변경 없이 코드의 구조를 재조정하는 것
print() 함수
▶ sep 옵션
- 요소 사이 사이 문자를 추가한다.
예) print("a", "b", "c", "d", sep="/")
→ 출력 : a/b/c/d
▶ end 옵션
- 출력 마지막에 적용한다.
예) print("a", "b", "c", "d", end="::::")
→ 출력 : abcd::::
2. 시퀀스 자료형 |
자료형 | list | tuple | dict | set |
기호 | [] | () | {} | {} |
list (리스트)
▶ 선언 방법
리스트 = list()
리스트 = [] # 값 없이 할당 가능
리스트 = [23, "리스트", 3.14, True, False] # 여러 자료형의 값을 할당 할 수 있음
▶ with. range() 함수
- range() : 연속된 숫자를 생성하는 기능
- range(시작, 끝, 간격)
예) list(range(0, 5)) → [0, 1, 2, 3, 4] == list(range(5))
예) list(range(0, 20, 2) → [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
예) list(range(20, 0, -1) → [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
* 용어 *
- 리스트의 패킹/언패킹이란?
dir() 함수
- 함수의 메서드들을 확인할 수 있다.
예) dir(list), dir(int), ...
tuple (튜플)
▶ list와 tuple의 차이
- list는 요소의 추가, 삭제, 변경이 가능하지만, tuple은 요소의 추가, 삭제, 변경이 불가하다.
dict (딕셔너리)
▶ list, tuple, string과의 차이
- list, tuple, string은 나열된 데이터간 관계성이 없지만, dict는 상관성이 있다.
- 데이터가 {key : value} 와 같이 키-값의 쌍으로 이루어져있다.
- 인덱싱은 안 되지만, key값으로 해당 value값을 구할 수 있다.
- values의 중복은 가능하나, key의 중복은 허락되지 않는다.
→ key값이 중복될 경우, 제일 마지막에 있는 key의 value값만을 출력한다.
예) people = {"힘" : 30, "지능" : 40}
▶ 이외 특징
- 데이터의 추가, 삭제, 변경이 가능하다.
· 삭제
del 딕셔너리["a"] → key "a"의 값이 삭제된다. (이때, value 값도 같이 삭제된다.)
· 변경
딕셔너리["a"] = 100 → key "a"의 values를 100으로 변경한다.
· 추가
딕셔너리.update({"b" : 50, "c" : 100})
▶ with. zip() 함수
- 병렬처리를 해준다.
- 배열의 개수는 꼭 맞춰주어야한다. (최소 개수에 맞게 잘림)
예) 딕셔너리 = dict(zip(["힘", "지능", "체력"], [30, 20, 60]))
→ {"힘" : 30, "지능" : 20, "체력" : 60}
▶메서드들
- 딕셔너리.keys() : key 값을 반환한다.
- 딕셔너리.values() : value 값을 반환한다.
- 딕셔너리.items() : 각 key-value 값을 반환한다.
set (셑)
▶ 요소의 순서가 없다.
- = 인덱스가 없다.
→ 그래서 출력하면 매번 요소의 위치가 바뀐다.
- 중복된 값을 넣을 수 없다.
set과 list/tuple 비교
사과_리스트 = list("apple") → 출력 : ['a', 'p', 'p', 'l', 'e']
사과_튜플 = tuple("apple") → 출력 : ('a', 'p', 'p', 'l', 'e')
사과_셑 = set("apple") → 출력 : {'a', 'p', 'l', 'e'} // 출력값은 달라질 수 있다.
▶ 데이터 추가
- add(), update()로 데이터 추가가 가능하다.
- 단, add()는 단어 통째로 추가되는데 update()는 단어 한글자씩 요소로 추가된다.
예) add("깻잎") → 출력 : {"상추", "깻잎"}
예) update("깻잎") → 출력 : {"상추", "깻", "잎"}
▶ 데이터 삭제
- remove(), discard()로 데이터 삭제가 가능하다.
- 단, remove()는 존재 하지 않는 데이터를 삭제할 경우 에러를 발생시키고
discard()의 경우 에러를 발생시키지 않는다.
예) remove("양배추") → 에러발생
예) discard("양배추") → 에러발생하지 않음
- pop()은 임의의 데이터를 삭제하고 삭제된 데이터를 반환한다.
- remove()와 discard()는 반환하지 않기에 출력을 추가로 해주어야한다.
▶ set의 활용
- 집합, 합집합, 교집합, 차집합 등 활용할 수 있다.
예시)
채소1 = {"당근", "양파", "오이", "배추"}
채소2 = {"양파", "오이", "대파", "가지"}
합집합(union, |) *중복되는 요소는 삭제함
set.union(채소1, 채소2) → 출력 : {"당근", "양파", "오이", "배추", "대파", "가지"}
교집합(intersection, &)
set.intersection(채소1, 채소2) → 출력 : {"양파", "오이"}
차집합(difference, -)
set.difference(채소1, 채소2) → 출력 : {"배추", "당근"}
시퀀스 자료형 중 그나마 dict형은 구분하기 쉽다. 나머지 자료형들은 아직 그 특징들이 헷갈린다...
특히, 데이터 추가, 삭제, 변경의 방법이 항상 헷갈려서 사용할때 10에 8 정도는 에러를 발생시킨다.
구글링이 일상이다 흑ㅠㅠ
좀 더 많이 보고 많이 사용하고 해야겠다. 언젠간 구글링 없이 사용할 날이 오겠지.