집합의 핵심
중복된 요소를 가질 수 없다 각각의 요소가 고유하다
집합 자료형
>>> s1 = set([1,2,3])
>>> print(s1)
{1,2,3} // 집합 자료형
>>> s2 = set("Hello")
>>> print(s2)
{'e','l','o','H'}
set으로 배열을 감싸서 정의해도 되고 아니면 {중괄호}로 감싸서 집합을 정의해도 된다
주로 데이터 관련해서 많이 쓴다 (중복된 데이터 지울 때)
>>> l = [1,2,2,2,3,3]
>>> newList = list(set(l)) // 중복을 지우고 다시 리스트로 만듦
>>> print(newList)
[1,2,3]
>>> s1 = set([1,2,3,4,5,6])
>>> s2 = set([4,5,6,7,8,9])
>>> print(s1 & s2)
{4,5,6}
>>> print(s1.intersection(s2))
{4,5,6}
>>> s1 = set([1,2,3,4,5,6])
>>> s2 = set([4,5,6,7,8,9])
>>> print(s1 | s2)
{1,2,3,4,5,6,7,8,9}
>>> print(s1.union(s2))
{1,2,3,4,5,6,7,8,9}
>>> s1 = set([1,2,3,4,5,6])
>>> s2 = set([4,5,6,7,8,9])
>>> print(s1 - s2)
{1,2,3}
>>> print(s1.difference(s2))
{1,2,3}
>>> print(s2.difference(s1))
{7,8,9}
>>> s1 = set([1,2,3])
>>> s1.add(4) //add를 해줌으로써 s1이 변화하는거지 결과 리턴은 x
>>> print(s1)
{1,2,3,4}
>>> s1 = set([1,2,3])
>>> s1.update([4,5,6])
>>> print(s1)
{1,2,3,4,5,6}
불(bool)
숫자 문자열처럼 Ture,False 참과 거짓인 값으로 되어 있다
참(True), 거짓(False)
첫 알파벳을 대문자로 써야한다
>>> a = True
>>> print(a)
True
>>> print(type(a))
'bool'
값 | 참 or 거짓 |
---|---|
"python"(문자열) | 참 |
"" | 거짓 |
1,2,3 | 참 |
[] | 거짓 |
() (튜플) | 거짓 |
{} (딕셔너리) | 거짓 |
1 | 참 |
0 | 거짓 |
None | 거짓 |
for문이나 while 반복문에서 알고 있으면 유용하게 사용된다
변수
자료형의 값을 저장하는 공간
변수 : a
메모리: 주소 2026043360 값: 1(객체)
>>> a = 1
>>> b = 'python'
>>> c = [1,2,3]
변수를 만들 때는 =(assignment) 기호를 사용한다
파이썬에서 사용하는 변수는 객체를 가리키는 것
>>> a = 3
>>> a = {1,2,3}
>>> b = a // a의 주소를 b에 넣은 것 a,b는 같은 것을 바라본다
>>> a[1] = 4
>>> print(a)
[1,4,3]
>>> print(b)
[1,4,3]
헷갈릴수 있는 부분이 b = a이므로 b를 출력하면 a[1]를 바꾸기 전 값인
[1,2,3]로 나올 것 같지만, b 는 a의 주소 값을 받아왔기에 a,b모두 [1,4,3]이 나온 것이다
'주소를 가지고 있는다'라는 개념을 알고 있을 것
>>> a = [1,2,3]
>>> b = a
>>> print(a[1])
4
>>> print(id(a)) // a의 주소
45559192
>>> print(id(b)) // b의 주소
45559192
>>> print(a is b) // a와 b가 같은 주소인가?
True
a = [1,2,3]을 그대로 b한테 주고 b의 값을 변하지 않게 하고 싶을 땐
>>> a = [1,2,3]
>>> //b = a는 a의 주소를 준 것
>>> b = a[:] // 새로운 게 따져서 들어간 것
>>> a[1] = 4
>>> print(a)
[1,4,3]
>>> print(b)
[1,2,3]
>>> print(id(a))
51256712
>>> print(id(b)) //새로운 값이 복사가 되어서 들어갔다
51422888
[:] 리스트를 처음부터 끝까지 슬라이싱해서 그 값을 넘겨준다
즉, 슬라이싱하면 새로운 [1,2,3]이라는 리스트가 생겨서 그것을 넣는 것
>>> from copy import copy // 밖에 있는 라이브러리를 가져온 것
>>> a = [1,2,3]
>>> b = copy(a) //새로운 메모리 즉 새로운 주소에 값을 복사해서 넣은 것, 복사한 것을 b에게 할당한 것
>>> a[1] = 4
>>> print(a)
[1,4,3]
>>> print(b)
[1,2,3]
>>> print(id(a))
51256712
>>> print(id(b)) //새로운 값이 복사가 되어서 들어갔다
51422888
copy를 쓰면 슬라이싱한 것과 마찬가지로 a리스트 주소를 주는게 아니라 값을 복사해서 리스트를 b한테 새롭게 할당시킨다
>>> a,b = ('python', 'life')
>>> print(a)
python
>>> print(b)
life
다른 언어에서 보기 힘든 파이썬에서 신기한 기능
>>> a = 3
>>> b = 5
//a,b를 교체할 때 다른 언어에서는 tmp를 두어
// tmp = a
// a = b
// b = tmp
// 그러나 파이썬에서는 직관적으로
>>> a,b= b,a
>>> print(a)
5
>>> print(b)
3