Programming 기초/Python
[Python 기초 #4] 집합(set), 불(bool), 변수(variable)
코딩상륙작전
2023. 4. 15. 11:07
* set(집합) 자료형
- 요소에 순서가 없다.
- 중복을 허용하지 않는다.
- 딕셔너리와 비슷하게 인덱싱으로 접근하려면 리스트나 튜플로 변환해야 한다. list(), tuple()
s1 = set([1, 2, 3]) # set함수 안에 배열을 넣는다.
s2 = {5, 2, 1, 2}
s3 = {'Hello'} # 이건 'Hello'를 하나의 요소로 인식한다.
s4 = set("hello") # hello를 구성하는 문자 하나하나를 요소로 인식한다.
print(type(s3))
print(s1)
print(s2)
print(s3)
print(s4)
------------------------
<class 'set'>
{1, 2, 3}
{1, 2, 5}
{'Hello'}
{'o', 'h', 'l', 'e'}
- 리스트 내의 중복된 요소를 제거할 때 집합이 자주 쓰인다.
l = [1, 2, 2, 2, 3, 3]
newlist = list(set(l))
print(newlist)
------------------------
[1, 2, 3]
- 교집합, intersection()
s1 = set([1, 2, 3, 4, 5, 6, 7])
s2 = {4, 5, 6, 7, 8, 9}
print(s1 & s2)
print(s1.intersection(s2))
-------------------------------
{4, 5, 6, 7}
{4, 5, 6, 7}
- 합집합, union()
s1 = set([1, 2, 3, 4, 5, 6, 7])
s2 = {4, 5, 6, 7, 8, 9}
print(s1 | s2)
print(s1.union(s2))
--------------------------------
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
- 차집합, difference()
s1 = set([1, 2, 3, 4, 5, 6, 7])
s2 = {4, 5, 6, 7, 8, 9}
print(s1 - s2)
print(s2 - s1)
print(s1.difference(s2))
print(s2.difference(s1))
------------------------------------
{1, 2, 3}
{8, 9}
{1, 2, 3}
{8, 9}
* 집합 자료형 관련 함수
- add() : 값 1개 추가하기
s1 = set([1, 2, 3])
s1.add(4)
# s1.add([4,5]) -> 비문.
print(s1)
-------------------------
{1, 2, 3, 4}
- update() : 값 여러 개 추가하기
s1 = set([1, 2, 3])
s1.update([4, 5, 6])
print(s1)
---------------------
{1, 2, 3, 4, 5, 6}
- remove() : 특정 값 제거하기
s1 = set([1, 2, 3, 4, 5])
s1.remove(4)
print(s1)
* bool(불) 자료형
- 참(True)과 거짓(False)을 나타내는 자료형.
a = True # 예약어이므로. 꼭 첫 문자를 대문자로 써야한다.
b = False
print(type(a))
print(type(b))
----------------------------
<class 'bool'>
<class 'bool'>
>>> 1==1
True
>>> 2>1
True
>>> 2<1
False
- bool() : 참, 거짓을 알려준다.
>>> bool("python")
True
>>> bool("")
False
>>> bool([1,2,3])
True
>>> bool([])
False
>>> bool((1, 2, 3))
True
>>> bool(())
False
>>> bool({})
False
>>> bool(1234)
True
>>> bool(0)
False
>>> bool(None)
False
>>> bool(1 < 2)
True
- 자료형의 참과 거짓
자료형 | 값 | 참 or 거짓 |
문자열 | "python" | 참 |
" " | 거짓 | |
리스트 | [1,2,3] | 참 |
[ ] | 거짓 | |
튜플 | ( ) | 거짓 |
딕셔너리 | { } | 거짓 |
숫자형 | 0이 아닌 숫자 | 참 |
0 | 거짓 | |
None | 거짓 |
* 자료형의 값을 저장하는 공간, 변수
- 파이썬에서 사용하는 변수는 객체를 가리키는 것
>>> a = [1,2,3] # a는 [1, 2, 3] 리스트라는 객체가 저장된 메모리의 주소를 가리키게 된다.
>>> id(a) # 객체의 주소 값을 돌려주는 파이썬 내장 함수
2506042824128 # a의 주소
>>> a = [1,2,3]
>>> b = a # b에 a가 가리키는 객체의 주소를 복사시킨다.
>>> id(a)
2506043088640
>>> id(b)
2506043088640
>>> a is b
True
- 리스트 복사
1. [:]
>>> a = [1,2,3]
>>> b = a[:]
>>> a[1] = 4 # a의 1번째 인덱스의 값을 4로 교체
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
# 주소 확인
>>> id(a)
2506043381760
>>> id(b)
2506042824128
2. copy() - copy 모듈에 내장된 copy 함수. 내용을 복사한다.
>>> from copy import copy # copy 모듈 import
>>> a = [1,2,3]
>>> b = copy(a)
>>> b
[1, 2, 3]
# 두 변수의 주소를 확인
>>> id(a)
2506043551040
>>> id(b)
2506043381376
#is 함수로 주소 동일한지 확인
>>> b is a
False
* 변수를 만드는 여러 가지 방법
1. 튜플
(a, b) = 'python', 'life' # 튜플은 괄호를 생략해도 된다.
print(a)
print(b)
print(type(a)) # 튜플을 활용하여 만든 변수이지만 자료형은 튜플이 아닌 문자열이다.
# 단일 요소를 갖는 튜플
c = ('python',) # 튜플이 단일 요소를 갖을 때 꼭 콤마를 붙여야 한다.
print(type(c))
# (주의) 콤마를 빼면, 튜플이 아닌 일반 문자열자료형이 된다.
c = ('python')
print(type(c))
---------------------------
python
life
<class 'str'>
<class 'tuple'>
<class 'str'>
2. 리스트를 활용해서 변수를 만드는 방법
[a, b] = ['python', 'life'] # 튜플은 괄호를 생략해도 된다.
print(a)
print(b)
print(type(a)) #리스트를 이용해 만든 변수이지만 자료형은 리스트가 아니다.
c = [1, 2, 3]
print(type(c)) #리스트로 만든 변수의 자료형은 'list'이다.
------------------------------------------------------------------
python
life
<class 'str'>
<class 'list'>
3. 여러 개의 변수에 같은 값을 대입할 수 있다.
a = b = 'python'
print(a)
print(b)
---------------------
python
python
4. 두 변수의 값을 아주 간단히 바꿀 수 있다.
a = 3
b = 5
a, b = b, a
print("a =", a)
print("b =", b)
---------------
a = 5
b = 3