점프 투 파이썬 2강 - 자료형(2)

Jongsung Shin·2021년 3월 4일

조코딩 Python

목록 보기
3/8

자료형의 종류: 숫자, 문자열, 리스트, 불, 변수, 튜플, 딕셔너리, 집합

리스트를 쓰는 이유?

상자를 각각 관리하면 복잡하니까. 하나로 몰아서 서랍장 처럼 만드는 것. 추가로 자료 넣기가 가능하다.

튜플도 서랍장이지만 추가로 넣는 것이 불가능하다. 자물쇠가 채워져 있다고 생각하면 된다.
튜플은 삭제, 변경을 못한다. 하지만, 당연히 볼 수 는 있어야 한다. 고로 인덱싱, 슬라이스, 더하기, 곱하기(새로운 튜플 만들기)는 가능하다.

02-4 튜플 자료형

■인덱싱

t1 = (1, 2, 'a', 'b')
t1[0]
1
t1[3]
'b'

■슬라이싱

t1 = (1, 2, 'a', 'b')
t11:

■딕셔너리
사물함 같은 의미
key와 vaule를 기억해야 한다.
api에 자주 활용 된다.

{
	"이름":"홍길동",
	"나이": "25",
    "성별": "여",
    "주소": "서울특별시"
    "특기": ["농구, "도술"]
    "가족관계": {"#":2, "아버지": "홍판서", "어머니": "춘섬"},
    "회사": "실리콘밸리"
}

value 안에 또 다른 딕셔너리가 들어갈 수도 있고, 리스트가 또 들어갈 수도 있다. 즉, value 안에는 모든지 들어갈 수 있다.

key는 들어갈 수 있는 게 제한적이다. 고정되어 있어야하기 때문이다. string, 튜플, int가 들어갈 수 있다.

02-5 딕셔너리 자료형
■연관 배열(Associative array) 또는 해시(Hash)
■단어 그대로 해석하면 사전이라는 뜻
■key를 통해 value를 얻는다

dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

■딕셔너리 쌍 추가하기

a = {1: 'a'}
a[2] = 'b'
a
{2: 'b', 1: 'a'}

■딕셔너리 요소 삭제하기

del a[1]
a
{'name':'pey', 3:[1, 2,3], 2:'b'}

■딕셔너리 key 사용해 value 얻기

grade = {'pey': 10, 'julliet': 99}
grade['pey']
10
grade['julliet']
99

■딕셔너리 만들 때 주의할 사항 key가 겹치면 안 된다.

a = {1:'a', 1:'b'}
a
{1:'b'}

■key 리스트 만들기(keys)

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
a.keys()
dict_keys(['name', 'phone', 'birth'])

■value 리스트 만들기(values)

a.values()
dict_values(['pey', '0119993323', '1118'])

■key, value 쌍 얻기(itmes)

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118)})

■a = {1:'yaya', 2:'sung', 3: "taihun"}
print(a.keys())
print(a.values())
print(a.items())
for k, v in a.items ():
print("키는: " + str(k))
print("벨류는: " + v)

■key: value 쌍 모두 지우기(clear)

a.clear()
a
{}

■key로 value얻기(get) - 오류가 안난다.

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
a.get('name')
'pey'
a.get('phone')
'0119993323'

■a = {1:'yaya', 2:'sung', 3: "taihun"}
print(a.get(4, '없음'))

■해당 key가 딕셔너리 안에 있는지 조사하기(in)

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
'name' in a
True
'email' in a
Flase

집합

02-6 집합 자료형

■집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형
■중복을 허용하지 않는다
■순서가 없다(Unordered)
■자료형 쓸 때 ()를 문자 앞에 쓴다. 그리고 대괄호. 결과는 중괄호{}

■집합 자료형 set = 집합이라는 뜻

s1 = set([1,2,3])
s1
{1, 2, 3}

■순서가 없고 중복이 허용되지 않는다

s2 = set("Hello")
s2
{'e', '1', 'o', 'H'}

집합 활용. 중복 빼기
l= [1,2,2,3,3]
newList = list(set(l))
print(newList)

■교집합 1

s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
s1 & s2
{4, 5, 6}

■교집합 2

s1.intersection(s2)
{4,5,6}

■합집합 1

s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
s1 l s2 // l = or
{1,2,3,4,5,6,7,8,9}

■합집합 2

s1.union(s2)
{1,2,3,4,5,6,7,8,9}

■차집합1

s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
s1 - s2
{1,2,3}
s2 - s1
{8,9,7}

■차지합2

s1.difference(s2)
{1,2,3}
s2.difference(s1)
{8,9,7}

■값 1개 추가하기(add)

s1 = set([1,2,3])
s1.add(4)
s1
{1,2,3,4}

■값 여러 개 추가하기(update)

s1 = set([1,2,3])
s1.update([4,5,6])
s1
{1,2,3,4,5,6}

■특정 값 제거하기(remove)

s1 = set([1,2,3])
s1.remove(2)
s1
{1,3}

02-7 자료형의 참과 거짓

불(boolean)은 True참 or Flase거짓
불(boolean)
if Flase:
print(a)
while Flase:
a+1=1
if문 Ture, Flase 꼭 대문자로 써여함

공백 (),{},[],"",'', 숫자 0, None 은 다 거짓

자료형의 참과 거짓은 어떻게 사용되나?

a = [1,2,3,4]
while a:
... a.pop()
...
4
3
2
1

02-8 자료형의 값을 저장한는 공간, 변수

실제로는 변수의 값에 들어가는 것이 아니라 메모리에 있다. 이 주소를 복사하는 거라 복사 할 떄 주의해야한다.

■다음 예와 같은 a,b,c를 변수라고 한다.

a = 1
b = "python"
c = [1,2,3]
변수를 만들 때는 =(assignment) 기호를 사용한다

■파이썬에서 사용하는 변수는 객체를 가리키는 것

a = 3
■3이라는 값을 가지는 정수 자료형(객체)이 자동으로 메모리에 생성
■변수 a는 객체가 저장된 메모리의 위치를 가리키는 레퍼런스(Reference)
■a라는 변수는 3이라는 정수형 객체를 가리키고 있다

■리스트 변수 주의사항

a = [1,2,3]
b = a
a
[1,4,3]
b
[1,4,3]

복사할 때 이거 그대로 넣으면 b랑 a랑 같이 바뀐다. 주소를 공유해 버린다. 그래서 copy하거나 슬라이싱으로 값을 그대로 새로 복사해서 쓸 수 있다.

a = [1,2,3]
b = a
a[1]=4
print(b)
a에 리스트, b에 a를 넣는다. a가 b에 값을 넣은 게 아니 주소를 넣은거다
즉,a랑 b랑 같은 곳을 바라보고 있다. a의 값을 바꿨을 때, b도 같이 바뀐다.

바뀌기 싫으면
a = [1,2,3]
b = a[:]
a[1] = 4
print(a)
print(b)
print(id(a))
print(id(b))

이렇게. 하나씩 슬라이싱해서 넣는 것.
id를 넣어보면 주소를 알 수 있다.

변수 바꾸기
a = 3
b = 5
tmp = b
b = a
a = tmp
print(a)
print(b)

tmp라는 임시변수에 b를 저장해 준다.
a 값을 b에 덮어 씌운다.
a를 b에 넣어야 하니까 임시변수에 저장해 놓은 tmp를 다시 꺼내 와서 a에 넣는다.
이렇게 a와 b를 바꾼다.
이것이 다른 언어들이 보통 쓰는 방식이다. 하지만 파이썬은 훨씬 쉽다

a = 3
b = 5
a,b = b,a
print(a)
print(b)

■꿀팁 사이트. 그림으로 이해하는 파이썬
http://pythontutor.com/live.html#mode=edit

profile
사장님

0개의 댓글