특징이 있는 정보는 어떻게 저장하면 좋을까?
ex. 전화번호부, 은행 번호표, 서적 정보, 창고에 쌓인 수화물의 위치 etc..
a = [1,2,3,4,5]
a.append(10)
a.append(20)
a.pop() # 20출력
a.pop() # 10출력
# pop은 return이 있으면서도 a가 변하는 함수.
a = [1,2,3,4,5]
a.append(10)
a.append(20)
a.pop(0) # 1출력
a.pop(0) # 2출력
[]
가 아닌 ()
를 사용t = (1,2,3)
print(t+t, t*2) # (1,2,3,1,2,3) (1,2,3,1,2,3) 출력
len(t) # 3출력
t[1] = 5 # Error 발생
❔ 왜 사용하는가 ❔
프로그램을 작동하는 동안 변경되지 않은 데이터를 저장 (학번, 이름, 우편번호 etc...)
함수의 반환 값등 사용자의 실수에 의한 에러를 사전에 방지
t = (1, ) # 값이 하나인 Tuple은 반드시 ","를 붙여야함
>>> s = set([1,2,3,1,2,3]) # set 함수를 사용 1,2,3을 집합 객체 생성 , a = {1,2,3,4,5} 도 가능
>>> s
{1, 2, 3}
>>> s.add(1) # 한 원소 1만 추가, 추가, 중복불허로 추가 되지 않음
>>> s
{1, 2, 3}
>>> s.remove(1) # 1 삭제
>>> s
{2, 3}
>>> s.update([1,4,5,6,7]) # [1,4,5,6,7] 추가
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> s.discard(3) # 3 삭제
>>> s
{1, 2, 4, 5, 6, 7}
>>> s.clear() # 모든 원소 삭제
>>> s1 = set([1,2,3,4,5])
>>> s2 = set([3,4,5,6,7])
>>> s1.union(s2) # s1 과 s2의 합집합
{1, 2, 3, 4, 5, 6, 7}
>>> s1 | s2 # set([1, 2, 3, 4, 5, 6, 7])
{1, 2, 3, 4, 5, 6, 7}
>>> s1.intersection(s2) # s1 과 s2의 교집합
{3, 4, 5}
>>> s1 & s2 # set([3, 4, 5])
{3, 4, 5}
>>> s1.difference(s2) # s1 과 s2의 차집합
{1, 2}
>>> s1 - s2 # set([1, 2])
{1, 2}
{Key1:Value1, Key2:Value2, Key3:Value3 ...}
형태처음 pose-estimation open-source 사용을 위해 파이썬을 처음 시작할때 dict구조를 처음 보고 이해하는데에 힘들었던 기억이....
>>> country_code = {} # Dict 생성, country_code = dict() 도 가능
>>> country_code = {"America": 1, "Korea": 82, "China": 86, "Japan": 81}
>>> country_code
{'America': 1, 'China': 86, 'Korea': 82, 'Japan': 81}
>>> country_code.items() # Dict 데이터 출력
Dict_items([('America', 1), ('China', 86), ('Korea', 82), ('Japan', 81)])
>>> country_code.keys() # Dict 키 값만 출력
Dict_keys(["America", "China", "Korea", "Japan"])
>>> country_code["German"]= 49 # Dict 추가
>>> country_code
{'America': 1, 'German': 49, 'China': 86, 'Korea': 82, 'Japan': 81}
>>> country_code.values() # Dict Value만 출력
dict_values([1, 49, 86, 82, 81])
from collections import deque
from collections import Counter
from collections import OrderedDict
from collections import defaultdict
from collections import namedtuple
from collections import deque
deque_list = deque()
for i in range(5):
deque_list.append(i)
print(deque_list)
deque_list.appendleft(10)
print(deque_list)
deque_list.rotate(2)
print(deque_list)
deque_list.rotate(2)
print(deque_list)
print(deque(reversed(deque_list)))
deque_list.extend([5, 6, 7])
print(deque_list)
deque_list.extendleft([5, 6, 7])
print(deque_list)
%timeit general_list()
: Jupyter에서 timeit함수를 사용하여 실행시칸을 측정가능.
for k, v in OrderedDict(sorted(d.items(), key=lambda t: t[0])).items():
print(k, v)
from collections import defaultdict
d = defaultdict(object) # Default dictionary를 생성
d = defaultdict(lambda: 0) # Default 값을 0으로 설정합
print(d["first"])
for i, v in OrderedDict(sorted(word_count.items(), key=lambda t: t[1],reverse=True)).items():
print(i, v)
데이터 분석 인턴 시, 활용하기에 너무 좋았었다.
from collections import defaultdict
c = Counter()
c = Counter('gallahad')
print(c) # Counter({'a':3, 'l':2, 'g':1, 'd':1, 'h':1})
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, y=22)
print(p[0] + p[1]) # 33
x, y = p
print(x, y) # 11, 22
print(p.x + p.y) # 33
print(Point(x=11, y=22))
이번 강의는 파이썬에서 처리되는 기본적인 자료 구조들에 대한 내용들이었기에, 다시한번 되짚어보는 느낌으로 수강했다😀
파이썬 특유의 문법을 활용하여 효율적으로 코드를 표현함
string type의 값을 "기준값"으로 나눠서 List 형태로 반환
한 줄로 간략하게 코드를 구성하기에 자주 사용.
어제의 과제에서도 one-line으로 표현하기 위해 많이 사용했었다.
String으로 구성된 list를 합쳐 하나의 string으로 반환
해당강의 교수님이 중요하다고 말씀.
join과 함께 one-line 코딩에서 나 또한 자주 사용한다.
기존 List 사용하여 간단히 다른 List를 만드는 기법
일반적으로 for + append 보다 속도가 빠름
>>> result = []
>>> for i in range(10):
... result.append(i)
...
>>> result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> result = [i for i in range(10)]
>>> result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> result = [i for i in range(10) if i % 2 == 0]
>>> result
[0, 2, 4, 6, 8]
python을 처음 시작할 때 큰 매력을 느꼈었던 기능
list의 element를 추출할 때 번호를 붙여서 추출
두 개의 list의 값을 병렬적으로 추출함
함수 이름 없이, 함수처럼 쓸 수 있는 익명함수
두 개 이상의 list에도 적용 가능함, if filter도 사용가능
코드의 직관성이 떨어져서 lambda나 reduce는 python3에서 사용을 권장하지 않음
Legacy library나 다양한 머신러닝 코드에서 여전히 사용중
Sequence형 자료형에서 데이터를 순서대로 추출하는 object
iterable object를 특수한 형태로 사용해주는 함수
Asterisk *
기호를 사용하여 함수의 parameter를 표시함
개수가정해지지 않은 변수를 함수의 paramerer로 사용하는 법
가변인자는 일반적으로 *args
를 변수명으로 사용
기존 parameter 이후에 나오는 값을 tuple로 저장.
def asterisk_test(a, b, *args):
return a+b+sum(args)
print(asterisk_test(1, 2, 3, 4, 5)) # a=1, b=2, *args = (3,4,5)
Asterisk *
기호를 두개 사용하여 함수의 parameter를 표시함
Parameter 이름을 따로 지정하지 않고 입력하는 방법
입력된 값은 dict type으로 사용할 수 있음
가변인자는 오직 한 개만 기존 가변인자 다음에 사용
def asterisk_test(a, b, *args):
return a+b+sum(args)
print(asterisk_test(1, 2, 3, 4, 5)) # a=1, b=2, *args = (3,4,5)
어제 있었던 과제에 대한 간단한 피드백을 주고 받았다.
아직은 강의 내용들이 기본적인 내용들로 구성이 되어 있어, 강의내용을 통한 피드백은 진행되지 않았다.