Python

Python - 3. 자료형 및 연산자 (2) (리스트, 세트, 튜플, 사전)

꿀먹는매미 2021. 3. 5. 09:42

파이썬의 자료형

        객체

                   프로퍼티

                   메서드

        단일값 자료형

                   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 )