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