[python] 패킹(packing), 언패킹(unpacking) 그리고 가변인자
■ 패킹은 하나 이상의 값들을 묶는 행위이고, 언패킹은 묶여 있는 값들을 풀어내는 행위임 tpl = (1, 3, 4, 6) # 패킹 lst = [10, 20, 30, 40] # 패킹 a, b, c, d = tpl # 언패킹 print(a, b, c, d) # 1 3 4 6 x, y, *z = tpl # 언패킹 print(x, y, *z) # 1 3 4 6 print(x, y, z) # 1 3 [4, 6] - z는 리스트로 묶임 n, m, *others = lst # 언패킹 print(n, m, *others) # 10 20 30 40 print(n, m, others) # 10 20 [30, 40] def nums(): return 1, 2, 3, 4, 5 # 파이썬은 여러 개의 리턴 값 가능(튜플 패킹..
2020. 8. 23.
[python] 리스트 컴프리헨션(List Comprehension) & 이터러블(iterable) 객체
■ 리스트 컴프리헨션(List Comprehension) - 리스트 내에 계산식, for 문, if 문 등을 삽입하여 리스트를 생성하는 것 - 이 표현식은 list, set, dict과 같은 자료형, 그리고 소괄호를 이용한 generator 객체 생성에도 이용 가능함 # 짝수 구하기 even_num = [n for n in range(1, 11) if not n % 2] print(even_num) # [2, 4, 6, 8, 10] # 3의 배수 구하기 three_multi = [n for n in range(1, 11) if not n % 3] print(three_multi) # [3, 6, 9] # 이중 for문 (주사위 2개로 나올 수 있는 경우의 수) dice = [str(i) + ':' + s..
2020. 8. 21.
[python] 변경 가능한 객체(mutable), 변경 불가능한 객체(immutable) - #2
# 리스트에 대해 sort() 함수 실행 시 원본 변경 여부 def list_sort(r): r.sort() # 원본 리스트를 참조변수 r에 대입한 것과 동일 print('r :', r) print(id(lst1), id(r), id(lst1)==id(r), sep=' : ') # 주소값 동일 lst1 = [4, 2, 6, 12, 9] list_sort(lst1) print('lst1 : ', lst1) # 원본 리스트값 변경됨 print('\n# 원본 리스트값 변경 안되게 하려면,') def list_sort2(r): r = list(r) # 참조변수 r에 새 리스트 생성 후 다시 할당, r.copy() 또는 r = r[:] 도 가능 r.sort() print('r :', r) # 새로운 리스트 sor..
2020. 8. 15.
[python] 변경 가능한 객체(mutable), 변경 불가능한 객체(immutable) - #1
변경 가능한 객체(mutable)인 리스트와 변경 불가능한 객체(immutable)인 튜플의 차이점 # 같은 변수일 경우, 리스트와 튜플의 차이 lst = [1, 2] print('lst:',id(lst)) lst += [3, 4] print('lst:',id(lst)) # 참조(주소)값이 같다 tu = (1, 2) print('tu:',id(tu)) tu += (3, 4) print('tu:',id(tu)) # 참조(주소)값이 다름 (새로운 튜플 생성) print('\n====== 리스트 ============') # 원본 값을 변경시킴(변경 가능한 객체(리스트)) def add_lst(x, y): x += y print('id(x) == id(x + y) :', id(x) == id(x + y)) #..
2020. 8. 12.