02 파이썬 프로그래밍의 기초, 자료형
집합 자료형, 참과 거짓, 변수
02-6 집합 자료형
- 집합( set )은 파이썬 2, 3부터 지원되기 시작한 자료형이다.
- set 자료형을 만들었을때 생성된 자료형은 따로 순서가 없다. = 순서가 뒤죽박죽이다. = 순서가 없다.( Unordered ).
List 와 Tuple은 순서가 있기( Ordered ) 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만, set 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다. 딕셔너리도 인덱스를 사용할 수 없다, 무조건 key 값으로 value를 얻어온다.
- 만약, set자료형에 저장된 값을 인덱싱으로 접근하려면 list나 tuple로 변환하여 사용해야 한다.
- 중복을 허용하지 않는다.
집합 자료형 활용하는 방법
집합 자료형 관련 함수들
02-7 자료형의 참과 거짓
- 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면("", [], (), {}) 거짓이 된다.
- 숫자에서는 그 값이 0일 때 거짓이 된다.
- None은 그저 거짓을 뜻한다는 것을 알아두자!
- 자료형의 참과 거짓은 보통 조건문에서 많이 사용된다.
02-8 자료형의 값을 저장하는 공간, 변수
- 변수를 만들 때는 앞에서 해온 것 처럼 = ( assignment ) 기호를 사용한다.
- Python은 변수에 저장도니 값을 스스로 판단하여 자료형을 알아차린다. 따라서 C 언어나 Java처럼 변수의 자료형을 함께 쓸 필요가 없다.
변수란?
- Python에서 사용하는 변수는 객체를 가리키는 것이라고 말할 수 있다. 객체란 우리가 지금껏 보아 왔던 자료형을 포함해 'Python에서 사용되는 모든 것'을 뜻하는 말이다.
- 만약 위의 코드처럼 a=3이라고 하면 3이라는 값을 가지는 정수 자료형(객체)이 자동으로 메모리에 생성된다. a는 변수이름이며, 3이라는 정수형 객체가 저장된 메모리 위치를 가리키게 된다.
- 즉, 변수 a는 객체가 저장된 메모리의 위치를 가리키는 레퍼런스( Reference )라고도 할 수 있다.
변수를 만드는 여러 가지 방법
1. 튜플을 선언하는 것과 비슷한 방법으로 변수를 선언할 수 있다.
>>> a, b = ('python', 'life')
>>> (a, b) = 'python', 'life'
>>> a, b = 'python', 'life'
2. 리스트를 선언하는 것과 비슷한 방법으로 변수를 선언할 수 있다.
>>> [a, b] = ['python', 'life']
3. 여러 개의 변수에 같은 값을 넣을 수도 있다.
>>> a = b = 'python'
이 경우 a, b는 같은 객체를 가르킨다. 즉 id(변수이름)으로 변수가 가르키는 객체의 주소를 출력했을 때 같은 값이 나온다.
메모리에 생성된 변수 없애기
- a=3을 입력하면 3이라는 정수형 객체가 메모리에 생성된다고 했다. 그렇다면 이 값을 메모리에서 없앨 수 있을까? 3이라는 객체를 가르키는 변수들의 개수를 래퍼런스 카운트라고 한다. 이 래퍼런스 카운트가 0이 되는 순간 3이라는 객체는 자동으로 사라진다.
- 즉, 객체를 가리키고 있는 것이 하나도 없을 때 객체는 메모리에서 사라지게 되는 것 이다. 이것을 가비지 콜렉션( Garbage collection, 쓰레기 수집)이라고도 한다.
>>> a=3
>>> b=3
>>> del(a)
>>> del(b) #3을 가리키는 변수가 모두 사라져 메모리에서 3 객체가 삭제된다.
리스트를 변수에 넣고복사하고자할 때
일반적으로 아래와 같이 사용하면 두 변수는 같은 객체를 가르킨다.
>>> a=[1, 2, 3]
>>> b=a
또는
>>> a=b=[1, 2, 3]
- 그렇다면 같은 값을 가지도록 복사해 넣으면서 다른 객체 리스트를 가리키게 하는 방법은 없을까?
1. [ : ] 이용
>>> a=[1, 2, 3]
>>> b=a[:]
2. copy 모듈 이용
>>> from copy import copy
>>> b=copy(a)
'개발자 레니는 지금 - > 소프트웨어와 함께' 카테고리의 다른 글
ING - [ Do it! Jump to Python ] 04 프로그램의 입력과 출력은 어떻게 해야 할까? (0) | 2017.07.27 |
---|---|
[ Do it! Jump to Python ] 03 프로그램의 구조를 쌓는다! 제어문 (0) | 2017.07.26 |
[ Do it! Jump to Python ] 02-2 파이썬 프로그래밍의 기초, 자료형 - 리스트, 튜플, 딕셔너리 (0) | 2017.07.25 |
[ Do it! Jump to Python ] 02-1 파이썬 프로그래밍의 기초, 자료형 - 숫자형, 문자열 자료형 (0) | 2017.07.24 |
[ Do it! Jump to Python ] 01 파이썬이란 무엇인가? (0) | 2017.07.20 |