Dev/python
파이썬 자료형(2)
Okdol-Min
2020. 9. 15. 22:15
리스트 vs 튜플
리스트는 대괄호 [ ]
- 리스트는 append를 통해 계속 요소를 추가할 수 있음 (변경 가능)
튜플은 소괄호 ( )
- 튜플은 추가할 수 없다 (수정 삭제 불가능) = 고정된 형태의 자물쇠 잠김 형태
t1 = (1, 2, 'a', 'b')
# 튜플은 삭제 수정이 안된다.
# 다만 보는 것은 가능하다. 슬라이싱 인덱싱같은 것
t1[0] = 'c'
del t1[0]
딕셔너리
key와 value로 이루어짐 = 자바에서의 Map과 같은 형태 = JSON과 같은 형태
- API에 자주 활용됨
- 연관 배열 또는 해시라고 부름
- Key를 통해 Value를 얻는다. (키를 통해 빠르게 찾을 수 있다)
- 키가 중복되면 안된다!! 키가 핵심
dic = {'name': 'Eric', 'age': 15}
print(dic['name'])
# 아래와 같이 키와함께 값을 추가할 수 있다.
a = {1: 'a'}
a['name'] = "익명"
print(a)
# 결과값 : {1: 'a', 'name': '익명'}
#--------------------------------#
a = {1: '서울', 2: '대전', 3: '대구'}
print(a.keys()) # 키만 뽑아서 출력 가능
print(a.values()) # 값만 뽑아서 출력 가능
print(a.items()) # 전체를 새로운 배열안에 튜플형태로 담을 수 있음
# 결과값
dict_keys([1, 2, 3])
dict_values(['서울', '대전', '대구'])
dict_items([(1, '서울'), (2, '대전'), (3, '대구')])
#--------------------------------#
a.clear() # 딕셔너리를 완전히 비운다
#--------------------------------#
# print(a[4]) 대괄호는 에러가 난다.
# print(a.get(4, '없음')) get으로 사용하게되면 키값이 없다는 none을 찍음
# -> 기본값을 바꿔줌으로써 활용할 수 있음
집합 자료형(set) = 자바의 set과 비슷
- 중복된 값을 가질 수 없다
- 집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형
- 순서가 없다.
## 집합선언방법
#s1 = set([1,2,3]) # set으로 배열을 감싸거나
s1 = {1, 2, 3} # 중괄호로 이렇게 선언
print(type(s1))
#-- 교집합 표현하는 방법 --#
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 & s2)
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)
print(s1.union(s2)) # 이렇게도 표현해도 됨
# 결과값 : {1, 2, 3, 4, 5, 6, 7, 8, 9}
#-- 차집합을 표현하는 방법 --#
print(s1 - s2)
print(s1.difference(s2)) # 이렇게도 표현해도 됨
# 결과값 : {1, 2, 3}
#-- 값 추가하기 --#
s1 = set([1, 2, 3])
s1.add(4) # 값 1개 추가하기
print(s1)
s2 = set([1, 2, 3])
s2.update([4, 5, 6]) # 값 여러개 추가하기
print(s2)
불(bool) 자료형 / 참(true) OR 거짓(false)
a = True # T를 대문자로써줘야 자료형으로 들어감
b = False # 마찬가지로 F 대문자
print(a)
print(b)
자료형의 참과 거짓
a = "안녕"
if a:
print(a)
# 나오는 이유는 파이썬 내부적으로 값이 있으면 True
b = ""
if b:
print(b)
# 값이 없는 거는 파이썬에서는 False로 판단
# 배열도 마찬가지로
a = [1, 2, 3, 4]
while a: # 리스트가 돌면서
a.pop() # 하나씩 뽑아내는데
print(a) # 다 뽑아내면 False로 판단하여 중지
변수
a = [1, 2, 3]
b = a
a[1] = 4
print(a)
print(b)
# a와 b가 같은 결과값이 나오는 이유는 같은 주소를 가지고 있기 때문이다.
a = [1, 2, 3]
b = a[:]
# a의 처음부터 끝까지 슬라이싱해서 b에 넣어준다
# 즉 주소가 아닌 새로운 값을 넣어준다는 뜻
a[2] = 4
print(a)
print(b)
# 결과값 :
#[1, 2, 4]
#[1, 2, 3]
print(id(a))
print(id(b)) # 주소값도 달라진다
# 결과값 :
# 140690578811968
# 140690601698880
#----------------------------------#
from copy import copy
a = [1, 2, 3]
b = copy(a) # 값을 복사한거기 떄문에 다르다
a[2] = 4
print(a)
print(b)
# 주소값도 다름
print(id(a))
print(id(b))
변수를 만드는 여러가지 방법
# 변수를 할당하는 여러가지 방법
a, b = ('python', 'life') # 튜플을 사용하여 할당
(a, b) = 'python', 'life' # 이렇게도 쓸 수 있음
[a, b] = ['python', 'life'] # 배열을 사용해서도 가능
print(a)
print(b)
# 결과값 :
# python
# life
a = b = 'hello'
print(a)
print(b)
# 결과값 :
# hello
# hello
#--------------------------------------------#
# a값을 b로 옮기고 b를 a로 옮길때
# 보통 아래와 같이 함(다른언어에서)
a = 3
b = 5
tmp = b
b = a
a = tmp
print(a)
print(b)
# but 파이썬에서는!!
a = 3
b = 5
a,b = b,a # 이 한줄로 변경이 가능하다!! 사기캐!!
print(a)
print(b)