본문 바로가기

Dev/python

파이썬 자료형(2)

리스트 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))

copy를 통해 값을 복사해서 새로만듬

변수를 만드는 여러가지 방법

# 변수를 할당하는 여러가지 방법
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)

'Dev > python' 카테고리의 다른 글

파이썬 모듈  (0) 2020.09.21
파이썬 함수(입출력)  (0) 2020.09.17
파이썬의 제어문  (0) 2020.09.16
파이썬 자료형  (0) 2020.09.15
파이썬의 시작  (0) 2020.09.14