250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- items()
- remove()
- glob
- locals()
- HTML
- __annotations__
- MySqlDB
- count()
- JS
- View
- discard()
- 오버라이딩
- CSS
- __sub__
- 파이썬
- shuffle()
- inplace()
- Database
- choice()
- decode()
- shutil
- fnmatch
- MySQL
- node.js
- __len__
- mro()
- __getitem__
- fileinput
- randrange()
- zipfile
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(파이썬) 세트 본문
728x90
반응형
1. 세트(set)
- 수학의 집합과 비슷한 형태로 순서가 없어서 어떤 값이 먼저 나올지 알 수 없고, 중복되는 데이터를 허용하지 않음
- 딕셔너리처럼 중괄호를 사용해서 선언하지만, key는 존재하지 않고 value만 존재
1-1. set만들기
In [1]:
s1 = {}
print(s1)
print(type(s1))
{}
<class 'dict'>
In [2]:
s1 = {1, 3, 5, 7}
print(s1)
print(type(s1))
{1, 3, 5, 7}
<class 'set'>
In [3]:
li1 = [1, 3, 5, 7]
s2 = set(li1)
print(type(s2))
<class 'set'>
In [4]:
s3 = {1, 3, 5, 3, 7, 9, 1}
print(s3)
{1, 3, 5, 7, 9}
In [5]:
li2 = [1, 3, 5, 3, 7, 9, 1]
print(li2)
s4 = set(li2)
print(s4)
[1, 3, 5, 3, 7, 9, 1]
{1, 3, 5, 7, 9}
In [6]:
print(3 in s4) # True
print(8 in s4) # False
print(8 not in s4) # True
True
False
True
1-2. set 함수
In [8]:
# add():set에 단일 데이터를 추가
s1 = {100, 200}
s1.add(150)
print(s1) # 순서가 일정하지 않음
s1.add(50)
print(s1)
{200, 100, 150}
{200, 50, 100, 150}
In [9]:
# update(): set에 여러 데이터를 한번에 추가
s2 = {10, 20, 30}
s2.update([40, 50, 60, 20])
print(s2)
{40, 10, 50, 20, 60, 30}
In [10]:
# remove(): set의 데이터를 제거. 제서할 데이터가 없으면 에러
s2.remove(50)
print(s2)
{40, 10, 20, 60, 30}
In [11]:
s2.remove(50) # KeyError: 50
print(s2)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-11-8ad4064136d0> in <module>
----> 1 s2.remove(50)
2 print(s2)
KeyError: 50
In [13]:
# discard(): set의 데이터를 제거. 제거할 데이터가 없어도 에러가 발생하지 않음
s2.discard(30)
print(s2)
{40, 10, 20, 60}
In [14]:
s2.discard(30)
print(s2)
{40, 10, 20, 60}
In [17]:
# copy(): set을 복사
# id(): 저장된 메모리주소를 10진수로 표현
s3 = {10, 20, 30}
s4 = s3.copy()
print(s3)
print(s4)
print(id(s3))
print(id(s4))
{10, 20, 30}
{10, 20, 30}
140335945922816
140335945679584
In [16]:
li1 = [1, 2, 3, 4]
li2 = li1
print(id(li1))
print(id(li2))
140335536201152
140335536201152
1-3. set의 연산자
In [19]:
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
In [22]:
# 합집합
result = s1 | s2
print(result)
result = s1.union(s2)
print(result)
{70, 40, 10, 50, 20, 60, 30}
{70, 40, 10, 50, 20, 60, 30}
In [24]:
# 교집합
result = s1 & s2
print(result)
result = s1.intersection(s2)
print(result)
{40, 50, 30}
{40, 50, 30}
In [26]:
# 차집합
result = s1 - s2
print(result)
result = s1.difference(s2)
print(result)
{10, 20}
{10, 20}
In [28]:
# 대칭 차집합
result = s1 ^ s2
print(result)
result = s1.symmetric_difference(s2)
print(result)
{20, 70, 10, 60}
{20, 70, 10, 60}
2. 세트와 zip() 함수
In [30]:
string = 'apple'
li = [1, 2, 3, 4, 5]
tu = ('김사과', '반하나', '오렌지', '이메론', '채애리')
In [31]:
print(zip(string, li, tu))
<zip object at 0x7fa2826721c0>
In [32]:
print(list(zip(string, li, tu)))
[('a', 1, '김사과'), ('p', 2, '반하나'), ('p', 3, '오렌지'), ('l', 4, '이메론'), ('e', 5, '채애리')]
In [33]:
print(set(zip(string, li, tu)))
{('a', 1, '김사과'), ('p', 2, '반하나'), ('l', 4, '이메론'), ('e', 5, '채애리'), ('p', 3, '오렌지')}
In [34]:
print(dict(zip(string, li, tu))) # ValueError: dictionary update sequence element #0 has length 3; 2 is required
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-34-28a9b63ce198> in <module>
----> 1 print(dict(zip(string, li, tu)))
ValueError: dictionary update sequence element #0 has length 3; 2 is required
In [35]:
print(dict(zip(li, tu)))
{1: '김사과', 2: '반하나', 3: '오렌지', 4: '이메론', 5: '채애리'}
In [36]:
print(dict(zip(string, tu)))
{'a': '김사과', 'p': '오렌지', 'l': '이메론', 'e': '채애리'}
728x90
반응형
'파이썬 기초' 카테고리의 다른 글
(파이썬) 변수의 범위 (0) | 2023.03.09 |
---|---|
(파이썬) 사용자 정의 함수 (0) | 2023.03.08 |
(파이썬) 딕셔너리 (0) | 2023.03.08 |
(파이썬) 반복문 (0) | 2023.03.07 |
(파이썬) 조건문 및 연산자 (0) | 2023.03.07 |
Comments