교육 정보
- 교육 명: 경기미래기술학교 AI 교육
- 교육 기간: 2023.05.08 ~ 2023.10.31
- 오늘의 커리큘럼:
파이썬 자료구조
(7/17 ~ 7/28)- 강사: 이현주, 이애리 강사님
- 강의 계획:
1. 자료구조
def twofold(a):
a = a * 2
x = 5
# 불변객체이기 때문에 call by value 형식으로 값인 5만 인자로 넘겨짐
# → x 값은 변하지 않음
twofold(x)
print(x)
#
# 결과
5
def test(a, b):
a = a * 2
b.append('test')
x = 5
y = [1, 2]
test(x, y)
print(x) # call by value
print(y) # call by reference
#
# 결과
5
[1, 2, 'test']
- 리스트와 튜플의 패킹 언패킹
first, *rest = [1, 2, 3 ,4, 5] print(first) print(rest) def ex_args(a, b, c): return a * b * c L = [2, 3, 4] print(ex_args(*L)) print(ex_args(3, *L[1:])) # # 결과 1 [2, 3, 4, 5] 24 36
x = (1, 2, 3) print(x) # # 결과 (1, 2, 3)
a, b, c = x print(a, b, c) *d, e = x print(d, e) d, *e = x print(d, e) # # 결과 1 2 3 [1, 2] 3 1 [2, 3]
Collections 모듈의 다양한 dictionary 타입
defaultdic: 기본 자료형을 지정. 존재하지 않는 키 조회시 기본 자료형 기준 디폴트 값을 가지는 해당 키 생성
OrderedDict(파이선 3.7부터는 기본 dict이 순서를 유지해서 쓸 일이 없음)
counter
import collections
a = [1,2,3,4,5,5,5,6,6]
collections.Counter(a)
#
# 결과
Counter({1: 1, 2: 1, 3: 1, 4: 1, 5: 3, 6: 2})
seq = "파이썬 리눅스 유닉스 C C++ 파이썬 유닉스 자바 파이썬 리눅스"
a = list(seq.split(' '))
print(a)
collections.Counter(a).most_common(3)
#
# 결과
['파이썬', '리눅스', '유닉스', 'C', 'C++', '파이썬', '유닉스', '자바', '파이썬', '리눅스']
[('파이썬', 3), ('리눅스', 2), ('유닉스', 2)]
from collections import Counter
def counter_example():
""" 항목의 발생 횟수를 매핑하는 딕셔너리를 생성한다. """
seq1 = [1, 2, 3, 5, 1, 2, 5, 5, 2, 5, 1, 4]
seq1_counts = Counter(seq1)
print(seq1_counts)
""" 항목의 발생 횟수를 수동으로 갱신하거나, update() 메서드를 사용할 수 있다. """
seq2 = [1, 2, 3]
seq1_counts.update(seq2)
print(seq1_counts)
from collections import Counter
def counter_example():
""" 항목의 발생 횟수를 매핑하는 딕셔너리를 생성한다. """
seq1 = [1, 2, 3, 5, 1, 2, 5, 5, 2, 5, 1, 4]
seq1_counts = Counter(seq1)
print(seq1_counts)
""" 항목의 발생 횟수를 수동으로 갱신하거나, update() 메서드를 사용할 수 있다. """
seq2 = [1, 2, 3]
seq1_counts.update(seq2)
print(seq1_counts)
seq3 = [1, 4, 3]
for key in seq3:
seq1_counts[key] += 1
print(seq1_counts)
""" a+b, a-b와 같은 셋 연산을 사용할 수 있다. """
seq3_counts = Counter(seq3)
print(seq3_counts)
print(seq1_counts + seq3_counts)
print(seq1_counts - seq1_counts)
if __name__ == "__main__":
counter_example()
#
# 결과
Counter({5: 4, 1: 3, 2: 3, 3: 1, 4: 1})
Counter({1: 4, 2: 4, 5: 4, 3: 2, 4: 1})
Counter({1: 5, 2: 4, 5: 4, 3: 3, 4: 2})
Counter({1: 1, 4: 1, 3: 1})
Counter({1: 6, 2: 4, 3: 4, 5: 4, 4: 3})
Counter()
if name=='main': 의미
→ 참고