본문 바로가기
이것저것

파이썬 데이터타입

by 문자메일 2019. 3. 10.

https://python.bakyeono.net/chapter-5-3.html

파이썬 데이터타입

기본 : 정수, 실수, 불리안

복합 : 문자열, 리스트, 튜플, 딕셔너리, 세트

 - 순서 있는 자료형 : 문자열, 리스트, 튜플 (인덱스 슬라이싱 가능)

 - 순서 없는 자료형 : 딕셔너리, 세트  (인덱스 슬라이싱 불가능)

 - 변경 가능 자료형 : 리스트, 딕셔너리, 세트

 - 변경 불가 자료형 : 스트링, 튜플


메모리 할당

c언어 : 변수의 자료형에 맞는 메모리 공간을 먼저 확보하고, 그 공간에 값을 넣는다.

파이썬 : 객체(모든 데이터 타입은 객체)가 만들어 진 후 변수이름이 그 공간을 참조한다. 


인덱스 슬라이싱 & 문자열 함수

s='    abc    kkk    a   '

s1='###abc###'

s2='abc def ghi'

s3='000-1111-2222'

s4='abcdefghi'

#index 012345 6 7 8

#            -3-2-1

print(s4[0])

print(s4[1])

print(s4[-1])


#slicing [시작인덱스:끝인덱스:증가치]

#시작인덱스<=idx<끝인덱스

print(s4[1:5:2])

print(s4[1:5:1])

print(s4[1:4]) #증가치 default 1

print(s4[1:])

print(s4[:4])#시작인덱스 생략하면 0

print(s4[-1:-4:-1]) #-의 경우에는 -증가치를 반드시 주어야 한다.

print(s4[:-4:-1]) #- 앞 생략한 경우는 -1이 디폴트이다


s[0] = 'b' # 파이썬 string은 변경 불가 자료형이므로 Error


# print(s.strip()) #default는 좌우 화이트 스페이스 제거

# print(s1.strip('#')) #좌우 '#'제거

# print(s2.split()) #화이트스페이스를 기준으로 리스트화

# print(s3.split('-'))

# print(s1.replace('abc','hello'))


파이썬 리스트 & 관련 함수

my = [10,20,30,40,50,40]
# print(my)
# print(type(my))
# print(my[0])
# print(my[-1])
# print(my[1:])

my.append(60)
my.append(70) #값으로 추가
my.insert(2,100) #인덱스로 해당 위치에 추가

my.pop(1)#인덱스로 삭제
my.remove(100) #값으로 삭제
del(my[2])
del(my[0:2]) # 파이썬 내장 함수 del로 슬라이스로도 삭제 가능
my[0] = 100
print(my[0])
print(my.count(40)) # 리스트에서 해당 value 갯수 카운트
print(my.index(40)) # 해당 값의 인덱스 찾기
print(len(my)) # 파이썬 내장 함수 문자열의 경우는 길이, 리스트는 리스트 원소 갯수
print(my)


튜플 & (un)Packing

t = (10,20,30,40,50)

print(t)

print(type(t))

print(t[0])

print(t[2:])

#t[0] = 100 #튜플은 변경 불가


a,b,c = 4,5,6

a=1;b=2;c=3

print(a,b,c)

t1 = 11,22,33 #,연산자인데 변수와 value 갯수가 않맞으면 자동 packing됨(tuple로 자동변환)

print(t1)

#n1,n2,n3 = (5,6,7) #unpacking 튜플

n1,n2,n3 = [5,6,7] #unpacking 리스트도 가능하다

print(n1,n2,n3)


딕셔너리

d={'a':1, 'b':2, 'c':3, 'f':4, 'd' :5}

print(d) #key값을 순차적으로 보여주는것이 아니라 비순차 알고리즘이기에 순서대로 나오는것을 보장할 수 없음

print(type(d))

d['a'] =10 #해당 key 값이 이미 존재한다면 수정

d['e'] = 4 #해당 key 값이 존재하지 않는다면 리스트에 추가

d[1] =5 #해당 key 값이 존재하지 않는다면 리스트에 추가

d.pop('b') #key value로 삭제도 가능

print(d)

print(d.keys())

print(d.values())

print(d.items()) #딕셔너리의 (key, value) 쌍 return

print(d.get('f', 1)) # 해당 key가 없을 때 default값 반환

print(d['c'])


scalar, vector, matrix (0, 1, 2차원 원소 접근법)

s=10 #scalar

v = [10,20,30,40] #vector, 1차원구조

v1 = (10,20,30,40)

v2 = {'a':10, 'b':20, 'c':30, 'd':40}

d = [[1,2],[3,4],[5,6]] #행렬 2차원

d1 = [(1,2), (3,4), (5,6)]

d2 = [{'k':1, 'e':2},

      {'k':3, 'e':4},

      {'k':5, 'e':6}]

d3 = {'k':[1,3,4], 'e':[2,4,6]}

print(d1)


print(d[0])

print(d[0][1])

print(d1[1])

print(d2[0]['e']) # dictionary의 경우 'key' 값으로 접근

print(d3['k'][2])

'이것저것' 카테고리의 다른 글

판다스 라이브러리 Series  (0) 2019.03.12
파이썬 연산자  (0) 2019.03.10
pandas, kaggle 정리  (0) 2019.01.28
union-find 알고리즘(파이썬 코드)  (0) 2018.08.19
파이썬 기본 문법 정리  (0) 2018.08.19

댓글