목록Programming (21)
● 제너레이터에 대한 이해와 제너레이터 함수 '제너레이터(Generators)'는 iterator 객체의 한 종류. 때문에 제너레이터를 전달하면서 next함수를 호출하면 값을 하나씩 얻을 수 있다. 제너레이터 함수(function): 제너레이터를 만들기 위한 함수 정의 제너레이터 표현식(expression): 제너레이터를 만들기 위한 식 def gen_num(): print('first number') yield 1 print('second number') yield 2 print('third number') yield 3 gen = gen_num()# gen이 참조하는 것이 '제너레이터 객체'임을 확인하기 위하여 print(type(gen))# 위 함수에는 yield라는 것이 보인다. 일단 함수 몸체에..
● map def pow(n): return n**2 str1 = [1,2,3] str2 = [pow(str1[0]), pow(str1[1]), pow(str1[2])] print(str2)# [1, 4, 9] pow함수를 이용해서 리스트의 원소값을 제곱해서 리스트를 생성하려면 저렇게 일일이 넣어줘야 한다. map함수를 사용하면 훨씬 간단하게 할 수 있다 # function: 함수 # iterable: 반복가능한 객체, 함수의 매개변수에 따라 여러개가 올 수 있다 # map(function, iterable, ...) def pow(n): return r**2 str1 = [1, 2, 3] str2 = list(map(pow, str1))# map은 str1의 값들을 전달하면서 pow를 호출 print(..
● 파이썬에서는 함수도 객체 x = 3.0# 실수 3.0 type(x) # # 실수는 float형 클래스의 객체임을 확인 x.is_integer()# 소수점 이하에 값이 있는지 묻는 메소드 호출 # True def func1(n): return n def func2(n): return n type(func1)# func1은 function클래스의 객체 type(func2)# func2는 function클래스의 객체 # 함수를 정의하면 파이썬은 그 함수의 내용을 기반으로 function클래스의 객체를 생성하는 것 # 함수 내에서 함수를 만들어서 이를 반환할 수도 있다 def fc_fac(n): def exp(x): return x**n return exp# !주의 exp함수를 리턴한다!! f2 = fct_..
● iter함수 ds = [1, 2, 3, 4] for i in ds: print(i, end=' ')# 1 2 3 4 ir = iter(ds) next(ir)# 1, iterator 객체를 통해 값을 하나 꺼내는 방법, 첫번째 값 반환 next(ir)# 2, 두번째 값 반환 next(ir)# 3, 세번째 값 반환 next(ir)# 4, 네번째 값 반환 next(ir)# 마지막 값을 얻었음에도 불구하고 next를 다시 호출하면 StopIteration예외 발생! # 다시 처음부터 값을 얻으려면 iterator 객체를 다시 얻으면 된다 ir = iter(ds)# iterator 객체 얻음! next(ir)# 1, 처음부터 값 반환 iter라는 이름의 함수를 호출하면서 리스트를 전달했다. 그러면 iter함수..
● 리스트 생성 방법 l1 = []# 빈 리스트 생성 l2 = [1, 2, 3]# 리스트 생성하는 가장 일반적인 방법 l3 = [1, 2, [1, 2, 3]]# 리스트가 포함된 리스트를 생성 r1 = list('Hello')# 문자열->리스트 r2 = list((5, 6, 7))# 튜플->리스트 r3 = list(range(0, 5))# 레인지->리스트, (레인지도 객체 중 하나) lis = []# 빈 리스트 lis1 = [1, 2, 3, 4, 5] for i in lis1: lis.append(i*2)# lis1의 원소들을 두배씩 증가시켜서 리스트 lis에 저장 print(lis) # [2, 4, 6, 8, 10] 위는 for루프를 사용해 리스트를 생성했다. 위의 코드를 다음과 같이 for루프를 사용하..

● 두 객체의 비교와 복사 # 객체 비교할때 사용하는 연산자 v1 == v2# 변수 v1과 v2가 참조하는 ※객체의 내용이 같은가※? => 값을 비교 v1 is v2# 변수 v1과 v2가 참조하는 ※객체는 동일※한가? => 주소를 비교 r1 = [1, 2, 3] r2 = [1, 2, 3] r1 == r2# 결과: True, 값은 같지만 r1 is r2# 결과: False, 주소 값은 다르다 r2 = r1 r2 is r1# 결과: True, r1이 참조하는 리스트에 r2라는 이름을 하나 더 붙임 r1 = ['John', ('man', 'USA'), [175, 23]] r2 = list(r1)# r1의 내용으로 새로운 리스트를 생성 r1 is r2# False r1[0] is r2[0]# True r1[1]..

● immutable & mutable mutable : 수정 가능한 객체 - list([a]), set({a}), dictionary({a:b}) immutable : 수정 불가능한 객체 - int, float, str, bool, tuple((a)) 객체가 지닌 값을 수정할 수 있는 list, set, dict 타입은 값을 수정해도 객체의 주소값이 같다. 같은 객체가 지닌 값이 수정이 되었기 때문에 주소값의 변경이 이루어 지지 않은 것이다. 그러나 tuple 타입의 객체 값은 값을 수정했을 때 주소값이 바뀌었다. 이는 기존의 변수 t에 값이 수정된 것이 아니라 새로운 튜플이 만들어진 것이기 때문이다. ● 성격에 따라 달라지는 함수의 정의 예시 1) def add_last(m, n): m += n r ..
● 레퍼런스 카우늩와 가비지 컬렉션 s = 'Garbage Collection'# 변수 s가 문자열을 참조한다 r = [1, 2, 3]# 변수 r이 리스트를 참조한다 파이썬의 변수는 빈 상자가 아닌 떼었다 붙였다 할 수 있는 '포스트잇'의 개념이다. 문자열 객체에 s라는 이름이 붙은 것이다. "변수 s가 문자열 'Garbage Collection'을 '참조(레퍼런스)한다." r = [1, 2, 3] r = 'simple'# 변수 r이 참조대상을 리스트에서 문자열로 바꿨다 ''' 이 경우에서 리스트 [1,2,3]은 아무도 참조하지 않기 때문에 더이상 접근할 수 가 없어 '소멸 대상'이 된다 일단 소멸 대상으로 등록만 해두고 시스템에 시간적인 여유가 생길 때 소멸시키게 된다. 이러한 일련의 소멸 규칙 및 과..