Python - 3. 자료형 및 연산자 (2) (리스트, 세트, 튜플, 사전)
파이썬의 자료형
객체
프로퍼티
메서드
단일값 자료형
Boolean, Number, String
집합 자료형
List, Tuple, Dictionary, Set
*형변환 함수
자료형( )
dir( ) - 함수 내용 찾아보기
type( ) - 자료형 알아내기
집합 자료형
- 리스트(List)
리스트는 값의 나열이며 순서가 존재한다.
여러 종류의 값을 담을 수 있으며 문자열 처럼 인덱스가 존재하여 슬라이싱이 가능하다.
리스트의 선언과 접근
# list01.py
list1 = []
# 형이름함수 - 형변환
list2 = list()
print( type(list1) )
print( type(list2) )
nlist = [1, 2, 3]
slist = [ '1', '2', '3' ]
print( nlist )
print( slist )
# 한개의 데이터 접근 : indexing
print( nlist[0] )
print( nlist[2] )
# 다차원 배열
nd2list1 = [ 1, 2, 3, [11, 12, 13] ]
nd2list2 = [ [11, 22, 33], [21, 22, 23] ]
print( nd2list1[0] )
print( nd2list1[3] )
print( nd2list1[3][0] )
#print( nd2list1[4] ) # 없는 데이터 접근 불가
print( nd2list1[-2] ) # - 로 접근 가능
# del 데이터 삭제
print( nlist )
del nlist[0]
print( nlist )
# 슬라이싱 가능
print( slist[ 1: ] )
del slist[ 1: ]
print( slist )
# 리스트 합연산, 곱연산 가능
n1list = [1, 2, 3]
n2list = [1, 2, 3]
slist = n1list + n2list
print( slist )
plist = n1list * 2
print( plist )
리스트에서 사용가능한 메서드
len() : 길이
count() : 횟수
append() : 추가
insert() : 해당위치에 원하는 값 넣기
index() : 해당 값 찾기
remove() : 해당 값 삭제
pop() : 원하는 위치 or 인자없을 때는 맨 뒤에서 값을 뽑아냄(삭제+반환)
sort() : 정렬
reverse() : 역순
split() : 지정한 문자로 문자열 나누기
join() : 지정한 문자로 문자열 연결
# list02.py
list = [ 1, 2, 3, 1, 2, 3, 1 ]
# 길이
print( len( list ) )
print( len( [1, 2, 3] ) )
# 횟수 측정
print( list.count( 1 ) )
print( list.count( 2 ) )
# 추가
list.append( 4 )
print( list )
list.append( [5, 6] )
print( list )
list.insert( 4, 4 )
print( list )
# 찾기 ( 찾는 것, 시작 위치, 끝 위치 )
print( list.index( 1 ) )
print( list.index( 1, 2 ) )
print( list.index( 1, 4, 8 ) )
# 삭제
list.remove(4)
print( list )
print( list.pop() )
# 정렬
list1 = [ 4, 2, 1, 5, 2, 1, 3, 2, 3, 1, 4 ]
list1.sort()
print( list1 )
# 뒤집기
list1.reverse()
print( list1 )
# split() -> 지정안하면 공백으로 나눔
str = 'Life is too short'
list2 = str.split()
print( list2 )
print( list2[2] )
# join() 앞의 문자로 연결
str2 = ','.join(list2)
print( str2 )
참조주소와 복사
# list03.py
list1 = [1, 2, 3]
# tostring()
print( list1 )
# 참조주소
print( id( list1 ) )
# 복사
list2 = list1
print( id( list2 ) )
list2[0] = 10
print( list1 )
print( list2 )
# 값을 복사
list3 = list1[:]
print( id( list3 ) )
list2[0] = 20
print( list1 )
print( list3 )
- 튜플(tuple)
튜플의 선언과 접근
# tuple01.py
tuple1 = ()
tuple2 = tuple()
print( type( tuple1 ) )
print( type( tuple2 ) )
tuple3 = (1, 2, 3)
print( tuple3 )
tuple4 = 1, 2, 3
print( tuple4 )
tuple11 = (1) # 1
tuple12 = (1,)
print( type( tuple11 ) )
print( type( tuple12 ) )
# index(), count()
print( tuple3.count(1) )
print( tuple3.index(2) )
# in 연산자
print( 3 in tuple4 )
# 인덱싱, 슬라이싱, +, x 정도만 가능
# 삭제 X, 읽기전용
del tuple3[0]
print( tuple3 )
튜플 표현 유의
# tuple02.py
a1 = 'python'
b1 = 'life'
print( a1, b1 )
# 전부 가능
#a2, b2 = ( 'python', 'life' )
#(a2, b2) = 'python', 'life'
a2, b2 = 'python', 'life'
print( a2, b2 )
- 사전(dictionary)
키와 값의 쌍으로 이루어진 자료구조
사전의 선언과 접근
# dictionary01.py
dict1 = {}
dict2 = dict()
print( type( dict1 ) )
print( type( dict2 ) )
dict3 = { 'name': 'pey', 'phone': '01011112222', 'birth': '1118' }
print( dict3 )
print( dict3[ 'name' ] )
dict3[ 'data1' ] = 'value1'
print( dict3 )
del dict3[ 'data1' ]
print( dict3 )
keys = dict3.keys() # values / items
print( keys )
print( type( keys ) )
list_keys = list( keys ) # 형변환 해서 list로 사용
print( list_keys )
- 세트(set)
집합과 동일, 리스트처럼 값의 모임이지만 순서가 없다.
set의 선언과 접근
# set01.py
set1 = {}
set2 = set()
set3 = {1}
set4 = {'1'}
set5 = { '1' : '1' }
print( type( set1 ) ) # {} 기본은 dict
print( type( set2 ) )
print( type( set3 ) )
print( type( set4 ) )
print( type( set5 ) ) # 값이 쌍으로 존재하면 dict
# 중복 배제
lset1 = set( [1, 2, 3, 4, 4, 5, 5, 5] )
lset2 = { 1, 2, 3, 4, 4, 5, 5, 5 }
print( lset1 )
print( lset2 )
sset = set( 'hello' )
print( sset )
#print( sset[0] ) # 직접접근 불가 -> list로 변환후 사용해야함
lsset = list( sset )
print( lsset )
print( lsset[0] )
집합 연산 가능
메서드
union() : 합집합
intersect() : 교집합
기호
- (차집합)
| (합집합)
& (교집합)
기타 메서드
add() : 값 추가
update() : 리스트 추가
remove() : 값 제거
# set02.py
s1 = { 1, 2, 3, 4, 5, 6 }
s2 = { 4, 5, 6, 7, 8, 9 }
print( s1 & s2 ) # 교집합
print( s1 | s2 ) # 합집합
print( s1 - s2 ) # 차집합
print( s1.intersection(s2) ) # 교집합
print( s1.union(s2) ) # 합집합
set1 = { 1, 2, 3 }
set1.add( 4 )
print( set1 )
set1.update( [4, 5, 6] )
print( set1 )
set1.remove(2)
print( set1 )