YOGAE

TODO: FIXME:

python 자료구조

14 Jul 2019

튜플

튜플은 1차원의 고정된 크기를 가지는 변경 불가능한 순차 자료형입니다.

# 튜플 생성
tup = 4, 5, 6

tup2 = (3, 4, 5), (7, 8)
# 자료형을 tuple로 변현
tuple([1, 2, 3])

tuple('str')
# tuple 원소 접근
tup[0] 

# tuple 값 분리
tup = (4, 5, 6)
a, b, c = tup

tup = 1, 2, (3, 4)
a, b, (c, d) = tup

values = 1, 2, 3, 4
a, b, *rest = values
rest # [3, 4]

연산자

(3, 4, 5) + (6, 7) # (3, 4, 5, 6, 7)
(1, 2) * 2 # (1, 2, 1, 2)

메서드

  • count: 주어진 값과 같은 값이 몇 개 있는지 반환

    a = (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)
    a.count(3) # 3
    
  • index: 주어진 값의 위치 반환

    a = (3, 4, 5, 6)
    a.index(5) # 2
    

리스트

튜플과 대조적으로 기스트는 크기나 내용의 변경이 가능합니다.

listA = [1, 2, 3]
listTup = list([4, 5, 6])

연산자

# 이어붙이기
[1, 2, 3] + [4, 5, 6] # [1, 2, 3, 4, 5, 6]

# 슬라이싱
seq = [3, 4, 5, 6]
seq[:2] # [3, 4]
seq[1:2] # [4]
seq[-1:] # [6] 음수는 끝에서 부터 위치
seq[::2] # [3, 5] 간격(step)을 지정
seq[::-1] # [6, 5, 4, 3] step이 -1인 경우 연순으로 반환 

메서드

  • append: 리스트의 끝에 새로운 값을 추가

    listA.append('hi')
    
  • insert: 리스트의 특정 위치에 새로운 값을 추가

    listA.insert(1, 'hello')
    
  • pop: 특정 위치의 값을 반환하고 해당 값을 리스트에서 삭제

    listA.pop(2)
    
  • remove: 원소를 삭제

    listA.remove(1)
    
  • extend: 이어붙이기(리스트의 + 연산자를 사용하여 이어붙이는 것 보다 성능이 좋음)

    listA.extend([2, 3, 4])
    
  • sort: 정렬

    listA.sort()
    listA.sort(key=len)
    

내장 순차 자료형 함수

  • enumerate: 순차 자료형에서 색인을 함께 반환할 때 사용

    for index, value in enumerate(listA):
    	print(index, value)
    
  • sorted: 정렬된 새로운 순차 자료형을 반환

    sorted([3, 1, 2, 6, 8, 3, 4]) # [1, 2, 3, 3, 4, 6, 8]
    
  • zip: 순차 자료형을 서로 짝지은 튜플을 생성

    # 리스트의 크기는 자료형 중에 짧은 크기로 정해진다.
    list1 = ['a', 'b', 'c', 'd']
    list2 = [1, 2, 3]
    zipped = zip(list1, list2)
    list(zipped)
    
  • reversed: 순차 자료형을 역순으로 변경

    list(reversed(range(3))) # [2, 1 ,0]
    

사전