Skip to content

Latest commit

 

History

History
172 lines (151 loc) · 3.55 KB

20190221.md

File metadata and controls

172 lines (151 loc) · 3.55 KB

1. Markdown Guide

  • Markdown을 이용해 TIL을 작성하지만 잘 사용해보려고 시도해 본 적은 없었다.
  • Markdown Guide가 있으니 앞으로는 이를 참고하여 좀 더 깔끔하게 작성해보자!
  • 문서 링크

2. 점프 투 파이썬

리스트 자료형

  • 리스트 자료형에 대해 새롭게 알게된 점
  • 예전에도 알고리즘 문제를 풀 때 구현은 다 했는데 중간에 꼬이는 경우가 있었음
  • 알고보니 list를 복사할 때 문제가 생겨서 copy 모듈을 이용했음
  • 당시에는 그런게 있나보다 하고 넘어갔는데 이제 이유를 명확하게 알게 됨
  • 예시
>>> a = [1, 2, 3]
>>> b = a	  
>>> id(a)	  
2156737012168
>>> id(b)	  
2156737012168
  • 파이썬에서 변수는 객체를 가리키는 것이라고도 말할 수 있음
  • a = [1, 2, 3]이라고 하면 [1, 2, 3]이라는 값을 가지는 리스트 자료형(객체)를 메모리에 생성함
  • 그리고 변수 a는 메모리에 있는 [1, 2, 3]이라는 리스트가 저장된 메모리의 주소를 가리킴
  • 위의 코드처럼 id()를 통해 메모리의 주소를 확인 할 수 있음

리스트를 복사하고자 할 때

>>> a = [1, 2, 3]
>>> b = a	  
>>> id(a)	  
2156737012168
>>> id(b)	  
2156737012168
>>> a is b
True
  • 이와 같이 리스트를 복사하면 a와 b는 같은 주소를 가리킴

발생하는 문제

>>> a[1] = 4
>>> a	  
[1, 4, 3]
>>> b	  
[1, 4, 3]
  • a 리스트의 두번째 요소를 바꾸었더니 b도 값이 바뀜
  • a,b 모두 동일한 리스트를 가리키고 있기 때문

해결 방안

  1. [:] 이용
>>> a = [1, 2, 3]	  
>>> b = a[:]	  
>>> id(a)	  
2110737424712
>>> id(b)	  
2110737424520
>>> a[1] = 4  
>>> a	  
[1, 4, 3]
>>> b	  
[1, 2, 3]
  1. copy 모듈 이용
>>> from copy import copy
>>> a = [1, 2, 3]	  
>>> b = copy(a)	  
>>> a[1] = 4	  
>>> a	  
[1, 4, 3]
>>> b	  
[1, 2, 3]
>>> id(a)	  
2611821784072
>>> id(b)	  
2611821833800

튜플 자료형

  • 리스트와 다른점은 그 값을 바꿀 수 없다는 점
t2 = (1, )
t4 = 1, 2, 3
  • 하나만 선언할 경우 t2와 같이 , 를 써줘야함
  • t4와 같이 선언하면 ()를 쓰지 않아도 튜플로 선언됨

딕셔너리 자료형

  • 연관 배열 또는 해시라고도 함
  • 리스트나 튜플처럼 순차적으로(sequential)해당 요소 값을 구하지 않는다.
  • key를 통해 value를 얻는다.
  • key 리스트 만들기
a.keys()
  • value 리스트 만들기
a.values()
  • key, value 쌍 얻기
a.items()
  • key로 value얻기
  • 만약 'name' 이라는 key가 없을 경우 None을 반환
a.get('name')
  • key가 딕셔너리 안에 있는지 확인
'name' in a

집합 자료형

  • set 키워드를 이용해 생성함
s1 = set([1, 2, 3])
s2 = set("Hello")
>>> s2
{'l', 'e', 'H', 'o'}
  • s2의 출력결과를 통해 'set'에는 다음과 같은 특징이 있음을 확인

  • 중복을 허용하지 않음

  • 순서가 없다.

  • 교집합 연산

s1 & s2
s1.intersection(s2)
  • 합집합 연산
s1 | s2
s1.union(s2)
  • 차집합 연산
s1 - s2
s2 - s1

s1.difference(s2)
s2.difference(s1)
  • 값 추가하기
s1.add(4)
  • 값 여러 개 추가하기
s1.update([4,5,6])
  • 특정 값 제거하기
  • 없는 값 지우는 경우 error 발생
s1.remove(2)

3. Django

Django 학습