본문 바로가기

개발자 레니는 지금 -/소프트웨어와 함께

[ Do it! Jump to Python ] 02-3 파이썬 프로그래밍의 기초, 자료형 - 집합자료형, 참과 거짓, 변수


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)