59doit
[Python] tuple, set, dic 본문
tuple :
튜플 괄호 사용, 만들면 수정불가 (튜플 요솟값 삭제, 변경 불가)
수정시 튜플 → 리스트 → 수정 → 튜플
슬라이싱 / 리스트는 대괄호
원소가 하나일때 콤마 꼭 사용 > t2 = (1, )
튜플확인
a= (3, )
print(type(a))
## <출력> <class 'tuple'>
튜플인덱싱
t1 = (1,2,'가','나')
t1[3] #<출력> '나'
t1[0] #<출력> 1
문자열은 따옴표로 출력된다
튜플슬라이싱
t1=(1,2,'가','나')
t1[0:] # <출력> (1, 2, '가', '나')
t1[2:] # <출력> ('가', '나')
튜플더하기
t1=(1,2,3)
t2=('가','나')
t1+t2
# <출력> (1, 2, 3, '가', '나')
튜플곱하기
t1=(8,2)
t1*2
# <출력> (8, 2, 8, 2)
튜플길이
t1=(1,2,3,4,5,6)
len(t1)
# <출력> 6
tuple ; 콤마 이용하여 값 생성
1) 원소 한개
t1=(1,0)
print(t1)
# <출력> {tuple:2} (1, 0)
# 2) 원소 여러개
t2 = (1,2,3,4)
print(t2)
# <출력> {tuple:4} (1, 2, 3, 4)
# 3) 튜플 색인
t3 =(t2[0],t2[1:3],t2[-1])
print(t3)
# <출력> {tuple:3} (1, (2, 3), 4)
# 4) 요소반복
for a in t2 :
print(a,end='') # 행으로 나열
# <출력> 1234
for a in t2:
print(a) # 열로 나열
# <출력>
# 1
# 2
# 3
# 4
end = ' ' : x에 대한 값을 행으로 나열
# 5) 요소검사
if 5 in t2 :
print ("5 있음")
else :
print("5 없음")
# <출력> 5 없음
6)관련함수
6-1) 자료형 변환
lst = list(range(1,6))
t4 = tuple(lst)
print(t4)
# <출력> (1, 2, 3, 4, 5)
6-2) count, index
.count ; 원소 숫자 x의 갯수 값
t4=(1, 2, 3, 4, 5)
print(len(t4),type(t4)) # <출력> 5 class 'tuple'
print(t4.count(2)) # <출력> 1
print(t4.count(3)) # <출력> 1
t5 = (1,2,3,3,5,6)
print(t5.count(3)) # <출력> 2
.index; 색인 x의 위치 값
t4=(1, 2, 3, 4, 5)
print(t4.index(3)) #<출력> 2
t6 = (1,2,(3,4),5,6)
print(t6.index(5)) # <출력> 3
print(t6.index(3)) # <출력> ValueError: tuple.index(x): x not in tuple
print(t6.index(3,4)) # <출력> ValueError: tuple.index(x): x not in tuple
set :
중복값 x, 중괄호 {}, 비순서형
1) 요소 중복 -> 중복제거
s = {1,2,3,2,3,5,6}
for a in s :
print (a, end='')
# <출력> 12356
2) 집합관련
s1 = {0,1,3,5,7,9}
s2 = {0,2,4,6,8}
2-1) 합 .union
print(s1.union(s2))
# <출력> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
# 2-2) 차 .difference
print(s1.difference(s2))
# <출력> {1, 3, 5, 7, 9}
print(s2.difference(s1))
# <출력> {8, 2, 4, 6}
# 2-3) 교 .intersection
print(s1.intersection(s2))
# <출력> {0}
# 3) 추가 .add
올바른 원소 추가법
s3.add(13)
print(s3)
# <출력> {11, 12, 13}
Error
s3={11,12}
print(s3.add(s2))
# <출력> TypeError: unhashable type: 'set'
.add 값 뒤에는 원소값이 들어가야한다
print(s3.add(13))
# <출력> None
형식 잘못되어 none 값 나온다
# 4) 삭제 .discard >>> add 와 같은 원리로
s4 = {14,15}
s4.discard(15)
print(s4)
# <출력> {14}
딕셔너리 :
대응관계 , 중괄호, 인덱스x {}
★key값에는 리스트, 딕셔너리 x / 튜플 o
딕셔너리 쌍 추가
ex1)
a={1:'a'}
a[2] = 'b'
print(a)
# <출력> {1: 'a', 2: 'b'}
※ 여기서 a[2] 는 인덱싱이 아니다
ex2)
a['name'] ='pay'
a[3] = ['나','는']
print(a)
# <출력> {1: 'a', 2: 'b', 'name': 'pay', 3: ['나', '는']}
딕셔너리 요소 삭제 ; 'del' 을 사용
del a[1]
print(a)
# <출력> {2: 'b', 'name': 'pay', 3: ['나', '는']}
del a[3]
print(a)
# <출력> {2: 'b', 'name': 'pay'}
ex2)의 결과값에서 'del' 을 사용하여 딕셔너리 요소를 삭제하였다.
key 사용해서 value값 찾기
a={'병아리':'삐약삐약','돼지':'꿀꿀'}
a['병아리'] # <출력> '삐약삐약'
a['돼지'] # <출력> '꿀꿀'
딕셔너리 함수 :리스트만들기
1. key 값만 가져오기
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.keys()
#<출력> dict_keys(['봄', '여름', '가을', '겨울'])
2. value 값만 가져오기
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.values()
#<출력> dict_values(['벚꽃', '수박', '단풍', '눈'])
3. 딕셔너리 내용 지우기 ; clear 사용
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.clear()
#<출력> {}
4. key값으로 value얻기
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.get('가을') # <출력> '단풍'
a['가을'] # <출력> '단풍'
a.get('가을') 와 a['가을'] 의 결과 값은 같다.
5. 존재하지 않는 값 = none
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
print(a.get('사계절')) #<출력> None
6. 존재하지 않는 값 = 오류
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.get['사계절'] #<출력> TypeError: 'builtin_function_or_method' object is not subscriptable
a['사계절'] #<출력> KeyError: '사계절'
7. 존재하지 않는 key 값일때 디폴드정해 놓은 값이 나오기 =>get(x,디폴트값)
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.get('사계절','없음')
# <출력> '없음'
cabinet={3:"a",10:"b"}
print((cabinet.get(5,"사용가능")))
# <출력> 사용가능
8. key값이 있는지 확인 : in
a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
'봄'in a #<출력>True
'사계절' in a #<출력>False
결과값은 True & False 로 나온다
9. 추가 없데이트
cabinet={3:"a",10:"b"}
cabinet[3]="c"
print(cabinet)
#<출력>{3: 'c', 10: 'b'}
cabinet[5]="d"
print(cabinet)
#<출력>{3: 'c', 10: 'b', 5: 'd'}
단어 빈도수(word count=wc) 구하기
data = ['1','2',',3','4'',2','2','3']
wc={} #빈셋
for key in data : # for 요소반복 문으로 data 값을 순차적으로 key라는 변수로 넘겨 받음
wc[key] = wc.get(key,0)+1
print(wc)
# <출력> {'1': 1, '2': 2, ',3': 1, '4,2': 1, '3': 1}
- 단계1) 받은 key 값을 wc로 지정 / get()함수로 키 값을 하나씩 빼온다.
- 단계2) get(x, '디폴트 값') Key 값이 없을 경우 미리 정해 둔 디폴트 값(=0)을 가져온다
- 단계3) data 1 값을 가져왔을때 key 값인 wc는 빈셋으로 값이 없으므로 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1}
- 단계4) data 2 값을 가져왔을때 key 값인 wc는 wc={1} 으로 2가 없어 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1,2}
- 단계5) data 3 값을 가져왔을때 key 값인 wc는 wc={1,2}이므로 3이 없어 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1,2,3}
- 단계6) data 4 값을 가져왔을때 key 값인 wc는 wc={1,2,3} 이므로 4가 없어 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1,2,3,4}
- 단계7) data 2 값을 가져왔을때 key 값인 wc는 wc={1,2,3,4} 이므로 2가 있어 디폴드값(=0)이 아닌 we[key]=1+1 >> 이되고
'Programming > Python(파이썬)' 카테고리의 다른 글
[Python] 리스트내포 (0) | 2022.10.31 |
---|---|
[Python] 반복문 loop, random, for, range (0) | 2022.10.31 |
[Python] 리스트 (0) | 2022.10.27 |
[Python] 문자열 관련함수 (0) | 2022.10.26 |
[Python] 포맷팅 format (0) | 2022.10.25 |