Python 기초, 자료형3(집합 자료형, 불 자료형, 변수)
본문 바로가기
programming/Python

Python 기초, 자료형3(집합 자료형, 불 자료형, 변수)

by 코딩하는 핑가 2020. 8. 26.
반응형

1. 집합 자료형

- 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형

>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}

>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}

 

* 특징

- 중복을 허용하지 않음

- 순서가 없음(Unordered)

** 리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만 set 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없음

>>> s1 = set([1,2,3])
>>> l1 = list(s1)
>>> l1
[1, 2, 3]
>>> l1[0]
1
>>> t1 = tuple(s1)
>>> t1
(1, 2, 3)
>>> t1[0]
1

 - set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한 후 사용해야 함

- 중복을 허용하지 않는 set의 특징은 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용하기도 함

 

* 교집합, 합집합, 차집합 구하기

>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])


>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2)
{4, 5, 6}


>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}


>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}

- 교집합 : & OR intersection

- 합집합 : | OR union

- 차집합 : - OR difference

 

* 집합 자료형  함수 (add, update, remove)

>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}

>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}

>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}

 

2. 불 자료형

-  참(True)과 거짓(Flase)을 나타내는 자료형 ( 첫 문자를 항상 대문자로 사용해야함 )

>>> a = True
>>> b = False

>>> type(a)
<class 'bool'>
>>> type(b)
<class 'bool'>

>>> 1 == 1
True
>>> 2 > 1
True
>>> 2 < 1
False

- type(x)는 x의 자료형을 확인하는 파이썬의 내장 함수이다.

>>> a = [1, 2, 3, 4]
>>> while a:
...     print(a.pop())
...
4
3
2
1

>>> if []:
...     print("참")
... else:
...     print("거짓")
...
거짓

>>> if [1, 2, 3]:
...     print("참")
... else:
...     print("거짓")
... 
참

- 마지막의 코드는 [1, 2, 3]은 요솟값이 있는 리스트이기 때문에 참

 

* 불 연산

>>> bool('python')
True

>>> bool('')
False

>>> bool([1,2,3])
True
>>> bool([])
False
>>> bool(0)
False
>>> bool(3)
True

 

3. 자료형의 값을 저장하는 공간, 변수

- 다른 프로그래밍 언어와 달리 파이썬은 변수에 저장된 값을 스스로 판단하여 자료형을 지정

- 변수는 객체를 가리키는 것 ( 우리가 지금껏 보아 온 자료형과 같은 것을 의미 )

 

* 리스트 복사

>>> a = [1,2,3]
>>> b = a

>>> a is b  # a와 b가 가리키는 객체는 동일한가?
True


>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]

- 마지막 코드에서 a 리스트의 두 번재 요소를 값 4로 바꾸었더니 a만 바뀌는 것이 아니라 b도 똑같이 바뀌었음

 

* 변수 생성 시 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만드는 방법

 

* [:] 이용, copy 모듈 이용

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]


>>> from copy import copy
>>> b = copy(a)

>>> b is a
False

- b = copy(a)는 b = a[:]과 동일

 

* 변수 만드는 여러가지 방법

>>> a, b = ('python', 'life')

>>> (a, b) = 'python', 'life'


>>> [a,b] = ['python', 'life']

>>> a = b = 'python'


>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a
5
>>> b
3

 

점프 투 파이썬

반응형

댓글