본문 바로가기

Python

Data Type 자료형 (리스트, 튜플)

리스트는 대괄호 []로 요소들을 감싸주며 반점 , 으로 요소들을 구분한다. 숫자형, 문자열 자료형에서 설명했듯이 리스트에서도 인덱싱 및 슬라이싱이 사용이 되는데, 인덱스 번호를 카운트하는 것은 앞전과도 같다. 

  • 리스트의 인덱싱을 설명하자면 이렇다.
a = [1,2,3,4,5]
a[-1] #앞전에 인덱싱을 제대로 이해했다면 바로 이해할 것이다.
>>5

a = [1,2,3,['a','b','c']]
a[3] #리스트안의 리스트를 호출하는 것도 가능하다. 
>>['a','b','c']

a[3][0] #3번째 요소의 0번째 요소를 호출한다.
>>'a'
  • 리스트의 슬라이싱
    a = [1,2,3,4,5]
    a[0:2]
    >>[1,2]​#문자열에서 사용한 방법이랑 동일
    
    a = [1,2,3,['a','b','c'],4,5]
    a[3][:2]
    >>['a','b'] #리스트 속의 리스트 호출
  • 리스트 연산자 - 문자열와 같은 형식으로써, 리스트 더하기, 곱하기가 가능하다.
    a = [1,2,3]
    b = [4,5]
    a+b
    >>[1,2,3,4,5]
    
    a = [1,2,3]
    a * 2
    >> [1,2,3,1,2,3]​
  • 리스트 수정, 변경, 삭제 - 리스트 수정 및 변경은 요소를 호출해 변수값만 바꿔줘도 바뀐다. 허나 주의할 점은 리스트 안에 리스트를 넣을 경우, a[1] = [2,3,4] 이런식으로 입력시, a의 인덱스 1번이 [2,3,4]로 변경이되고, a[1:2]로 입력하면 리스트 안에 2,3,4라는 요소가 2번자리에 추가가 된다. 리스트안의 요소를 삭제할때, 인덱스로 지정하여 빈 리스트를 값으로 지정해주거나, del 함수를 이용하여 삭제가 가능하다. 
    #리스트수정
    a = [1,2,3]
    a[2] = 4
    a
    >>[1,2,4]
    a[1:2] = ['a','b','c']
    a
    >>[1,'a','b','c',4]
    #만약 a[1]을 대신 넣는다면?
    a[1] = ['a','b','c']
    a
    >>[1,['a','b','c'],4] #리스트안에 리스트가 출력
    
    #리스트 요소 삭제
    a = [1,'a','b','c',4]
    a[1:3] = [] #a[1],a[2]를 공백으로 지정
    print(a)
    >>[1,'c',4]
    
    a
    >>[1,'c',4]
    del a[1] #del함수이용
    a
    >>[1,4]​
  • 리스트 관련 함수 - 리스트 안의 요소를 추가시키는 함수 (append, insert) :  append는 리스트의 제일 마지막에 덧붙히는 역할이고, insert는 새로 추가시킬 요소의 위치를 지정하여 요소를 추가 시킬 수 있다는 차이점이 있다. 그리고 리스트 정렬 (sort) : 요소들의 순서대로 정렬해준다. 리스트 순서 뒤집기 (reverse): 요소들의 순서를 정 반대로 뒤집어준다. 위치 반환 (index) : 리스트 속 요소의 인덱스값을 리턴(출력)한다. 요소제거 (remove, pop) : remove는 지정한 요소를 앞에서부터 하나씩 없애주는 함수이다. pop은 요소의 인덱스를 지정하여 삭제해주는 함수이다. 인덱스 지정을 안할시, 제일 마지막 요소가 삭제된다. 요소 개수세기 (count) : 말그대로 요소의 개수를 세주는 함수이다. 리스트 확장 (extend) : extend(x)에서 x는 리스트만 올 수 있으며, 리스트 전체가 들어가는 것이 아니라, x의 요소만 다른 리스트 속으로 들어가 확장을 한다.
     #example of 'append'
     a = [1,2,3]
     a.append(4)
     print(a)
     >> [1,2,3,4]
     
     a.append([1,2])
     print(a)
     >>[1,2,3,4,[1,2]]
     
     #example of 'insert'
     a = [1,2,3]
     a.insert(0,'hi') #a.insert(들어갈 위치, 삽입할 요소)
     a 
     >> ['hi',1,2,3]
     
     #example of 'sort'
     a = [5,2,3,1,4]
     a.sort()
     a
     >> [1,2,3,4,5]
     
     #example of 'reverse'
     a = ['a','c','b']
     a.reverse()
     a
     >> ['b','c','a']
     #sort와 reverse을 이용한 역순 정렬법
     a = [2,4,5,1,3]
    a.sort(), a.reverse()
    print(a)
    >>[5,4,3,2,1] 
     
     example of 'index'
     a = [1,2,3]
     a.index(2)
     >> 1 #a의 첫번째 요소, 리스트의 없는 값을 지정하면 에러 발생
     
     example of 'remove'
     a = [1,2,3,1,2,3]
     a.remove(2)
     a
     >> [1,3,1,2,3] #처음 나오는 2라는 요소 부터 삭제
     
     example of 'pop'
     a = [1,2,3]
     a.pop()
     a
     >>[1,2] #지정된 인덱스가 없으면 뒤에서 부터 삭제
     #인덱스값을 지정할 경우
     a.pop(1) #두번째 요소 삭제
     a
     >> [1,3]
     
     example of 'count'
     a = [1,2,3,1]
     a.count(1) #a라는 리스트 속 1의 개수를 셈
     >>2
     
     example of 'extend'
     a = [1,2,3]
     a.extend([4,5]) #리스트입력
     a
     >> [1,2,3,4,5] #리스트 확장

튜플은 리스트와 비슷하지만 리스트와 달리 ()로 둘러싸여있고, 수정이 불가하다.  이 안의 값을 수정시킬 수 없다는 건 큰 단점처럼 보이지만 나중에 프로그래밍을 할 경우, 프로그램이 실행되는 동안 절대 바뀌지 않기를 바라면 튜플을 사용해야된다. 이와 반대로, 수시로 값이 변화되어야할 경우 리스트를 사용하면 된다. 튜플의 요소를 리스트처럼 수정을 하려고하면 에러 구문이 발생된다. 수정, 삭제, 추가는 안되지만, 슬라이싱 및 인덱싱, 튜플 연산자 등은 리스트와 똑같음으로 설명은 생략하겠다.

#튜플의 생김새
a = ()
a = 1,2,3 #굳이 괄호를 안 넣어줘도 자동적으로 튜플로 지정이 된다.
a = (1,2,3)
a = (1,2,3,(4,5))