자료형2
리스트
대괄호 묶음
l1 = [1,2,3]
튜플
소괄호 묶음
t1 = (1,2,3,4,5)
t2 = ('a','b')
리스트와 비슷하나 값을 볼수는 있지만 변경할 수는 없다.
대입, append, del 불가
인덱싱, 슬라이싱, 더하기, 곱하기는 가능
★튜플은 변화하지 않는다.
print(t1[2]) # 3
print(t1[0:2]) # (1,2)
print(t1+t2) # (1,2,3,4,5,'a','b')
print(t1*3) # (1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
https://tariat.tistory.com/705
딕셔너리 (중요!)
사전 => 단어 : 뜻 => 키(Key) : 값(Value)
리스트 처럼 인덱스 번호로 찾는 게 아니라 키로 값을 찾는 형식이다.
{ } 중괄호 묶음
★★★키로 찾아야 하기 때문에 키(Key)는 절대 중복되면 안된다.
dic = {'Key1':'Value1', 'Key2':'Value2', 'Key3':'Value3'}
dic = {'name' : 'Eric', 'age' : 15}
print(dic['name']) #Eric
딕셔너리 쌍 추가
dic = {}
dic['Key'] = 'Value'
dic1 = {1:'a'}
dic1[2] = 'b'
dic1['name'] = '익명'
print(dic1) #{1: 'a', 2: 'b', 'name': '익명'}
딕셔너리 요소 삭제
키만 적어주면 값도 같이 삭제됨.
del dic['Key']
del dic1[1] #{2: 'b', 'name': '익명'}
Key 리스트 만들기
dic2 = {1:'빨',2:'주',3:'노',4:'초',5:'파'}
print(dic2.keys()) #dict_keys([1, 2, 3, 4, 5])
Value 리스트 만들기
print(dic2.values()) #dict_values(['빨', '주', '노', '초', '파'])
print(dic2.items()) #dict_items([(1, '빨'), (2, '주'), (3, '노'), (4, '초'), (5, '파')]) 리스트 안에 튜플 형태로 각각 저장
for k in dic2.keys(): #키를 하나씩 뽑아서 출력
print(k)
for k in dic2.values(): #Value 값을 하나씩 뽑아서 출력
print(k)
for k, v in dic2.items(): #아이템(키,값)을 하나씩 뽑아서 출력
print("키는 : " + str(k))
print("값은 : " + v)
#
키는 : 1
값은 : 빨
키는 : 2
값은 : 주
키는 : 3
값은 : 노
키는 : 4
값은 : 초
키는 : 5
값은 : 파
딕셔너리 지우기
dic2 = {1:'빨',2:'주',3:'노',4:'초',5:'파'}
dic2.clear()
print(dic2) #{}
Key로 Value 얻기
dic2 = {1:'빨',2:'주',3:'노',4:'초',5:'파'}
print(dic2[1] #빨
print(dic2.get(1)) #빨
#없는 키를 다루려고 할 때 차이가 있다.
print(dic2[6] #애러가 뜨고 프로그램이 종료된다.
print(dic2.get(6)) #None 애러가 뜨지않고 None 출력
print(dic2.get(6,'없음')) #없음 6이라는 키가 없을 때 '없음'을 출력
print(4 in dic2) #True dic2 딕셔너리에 4라는 키가 있느냐에 True 출력
print(8 in dic2) #False dic2 딕셔너리에 8라는 키가 있느냐에 False 출력
집합 (Set)
집합의 핵심 : 중복된 요소를 가질 수 없다. = 중복을 허용하지 않는다.
순서가 없다.
데이터를 다룰 때 많이 사용한다. 두개의 집합이 있으면 중복되는 것만 고른다거나 아니면 중복되는 것을 빼거나 할 때 사용
s1 = set({1,2,3})
s2 = {1,2,3} # 위에 것과 같은 의미
print(s1) #{1, 2, 3}
print(s2) #{1, 2, 3}
집합의 활용
L1 = [1,2,2,3,4,4,4]
newList = list(set(L1))
print(newList) #[1, 2, 3, 4] 리스트를 집합의 형태로 바꾸어서 중복되는 내용을 없애고 그 집합을 다시 리스트 형태로 만들어서 newList에 저장 (즉 리스트의 중복된 내용을 삭제할 때)
s3 = set("hello")
print(s3) #{'e', 'l', 'h', 'o'} 문자열에서 중복이 제거된 개별 문자로 쪼개짐. 순서도 뒤죽박죽 (집합=중복이 없고, 순서도 없다.)
교집합
s4 = set([1,2,3,4,5,6])
s5 = set([4,5,6,7,8,9])
print(s1 & s2) #{4, 5, 6} 교집합 : 공통된 값만 출력
print(s4.intersection(s5)) #{4, 5, 6} 교집합 : 공통된 값만 출력
합집합
print(s4 | s5) #{1, 2, 3, 4, 5, 6, 7, 8, 9} 합집합
print(s4.union(s5)) #{1, 2, 3, 4, 5, 6, 7, 8, 9} 합집합
차집합
print(s4 - s5) #{1, 2, 3} 차집합
print(s4.difference(s5)) #{1, 2, 3} 차집합
집합, 값 1개 추가하기 add
s4 = set([1,2,3,4,5,6])
s4.add(7)
print(s4) #{1, 2, 3, 4, 5, 6, 7}
집합, 값 여러개 추가하기 update
s4 = set([1,2,3,4,5,6])
s4.update([7,8,9,1,2])
print(s4) #{1, 2, 3, 4, 5, 6, 7, 8, 9} 중복된 값은 입력되더라도 추가가 되지 않고, 중복되지 않은 값들만 추가된다.
특정값 제거하기 remove
s4 = set([1,2,3,4,5,6])
s4.remove(3)
print(s4) #{1, 2, 4, 5, 6}
(Bool) 불 자료형
값 = True 또는 False (앞에는 대문자로 적어야 한다.)
파이썬 자료형의 참/거짓
"문자열" - True
"" - False (빈 문자열)
[1,2,3] - True
[] - False
{} - False
() - False
1 - True
0 - False
None - False
*값이 있으면 True, 값이 없으면 False로 인식
a = [1,2,3,4]
while a:
a.pop()
print(a)
#
[1, 2, 3]
[1, 2]
[1]
[] #False로 인식해서 while문 종료
변수 - 메모리
a = 1
변수(a)에 값(1)을 넣으면 그 값은 실제로는 메모리(RAM)에 들어있고 변수에는 값이 저장된 메모리의 주소(번지)가 들어가게 된다.
*파이썬에서 사용하는 변수는 객체를 가리키는 것!
(같은 값을 가지는 게 아니라 같은 메모리의 주소를 가지는 것)
http://pythontutor.com/live.html
값이 실제로 어떻게 돌아가는지 시각적으로 확인 가능
a = [1,2,3]
b = a
a[1] = 4
print(a) #[1, 4, 3]
print(b) #[1, 4, 3] #같은 주소를 가지므로 같은 값을 나타냄
주소값 확인 id
print(id(a)) #924120797640
print(id(b)) #924120797640
같은 주소를 바라보고 있는지 확인
print(a is b) #True
주소가 아닌 값을 그대로 복사하는 방법 [:]
a = [1,2,3]
b = a[:] #a의 처음부터 끝까지를 슬라이싱해서 b에서 값을 준다.
a[1] = 4
print(a) #[1, 4, 3]
print(b) #[1, 2, 3] #값이 변하지 않는다.
print(id(a)) #773681861064
print(id(b)) #773681861576
print(a is b) #False
copy 모듈로 복사하는 방법
from copy import copy #요거 추가해주고
a = [1,2,3]
b = copy(a) #요렇게 사용한다.
a[1] = 4
print(a) #[1, 4, 3]
print(b) #[1, 2, 3] #값이 변하지 않는다.
변수를 만드는 여러가지 방법
a = 1
b, c = ('python','life') #튜프을 이용해서 각각 할당
print(b) #python
print(c) #life
(d, e) = 'python','life' #튜플을 이용해서 각각 튜플에 할당.
print(d) #python
print(e) #life
[f, g] = ['python','life']
print(f) #python
print(g) #life
h = i = 'hello'
print(h) #hello
print(i) #hello
#2개의 변수 값을 서로 맞바꾸기
j = 3
k = 5
j,k = k,j
print(j) #5
print(k) #3
[파이썬] 함수, 사용자입출력, 파일입출력 (유튜브 보다가 메모) (0) | 2020.08.17 |
---|---|
[파이썬] 제어문 (조건문 if문, 반복문 while문 for문) 유튜브 보면서 메모.. (0) | 2020.08.17 |
[파이썬] 자료형, 리스트 추가/삭제 (유튜브 보면서 메모) (0) | 2020.08.16 |
파이썬 메모... (0) | 2020.08.15 |
파이썬(Python) 공부 메모 (3) | 2020.03.14 |