시퀀스 자료형

Sean·2021년 6월 1일

파이썬

목록 보기
1/3
post-thumbnail

시퀀스 타입

시퀀스(sequence)는 '연속적'이라는 뜻이다.

자료구조를 보면 크게 연속(Contiguous)방식과 연결(Link)방식이 있는데, 시퀀스는 그 중 메모리 공간을 기반으로 하는 연속 방식을 의미한다. 참고로, 연결 방식은 포인터를 기반으로 하는 방식이다.
[참고] 연속 방식으로는 배열, 연결 방식으로는 연결 리스트가 대표적이다.

리스트, 튜플, range, 문자열이 시퀀스 타입이며, 시퀀스 타입의 공통 기능을 제공한다.
시퀀스 타입으로 만든 객체를 시퀀스 객체라고 하며, 시퀀스 객체에 들어 있는 각 값을 요소라고 부른다.

특정 값이 있는지 없는지

  • 값 in 시퀀스객체
  • 값 not in 시퀀스객체

연결

  • 시퀀스객체1 + 시퀀스객체2
    객체를 서로 연결하여 새 객체를 만든다.
    range는 + 연산자로 객체 연결 불가능 -> TypeError 발생
    문자열에 숫자 연결 불가능 -> TypeError 발생

반복

  • 시퀀스객체 * 정수
    객체를 정수만큼 반복하여 새 객체를 만든다.
    range는 * 연산자로 객체 반복 불가능 -> TypeError 발생

요소 개수

  • len(시퀀스객체)

요소

  • 시퀀스객체[인덱스]
    인덱스는 요소의 순서를 나타낸다.
    내부적으로 시퀀스객체.__getitem__(인덱스)로 요소를 가져온다.
    인덱스의 범위를 벗어나면 IndexError가 발생한다.

음수 인덱스를 지정하면 뒤에서부터 요소에 접근한다.
마지막 요소에 접근하는 방법으로는 시퀀스객체[-1] 또는 len(시퀀스객체) - 1이 있다.

할당

  • 리스트[인덱스] = 값
    튜플, range, 문자열은 읽기 전용으로 할당이 불가능하다. -> TypeError 발생

삭제

  • del 리스트[인덱스]
    튜플, range, 문자열은 읽기 전용으로 삭제도 불가능하다. -> TypeError 발생

슬라이스

  • 시퀀스객체[시작인덱스:끝인덱스]
  • 시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭]
    시퀀스 객체의 일부를 잘라서 새 객체를 만든다.
    끝인덱스는 가져오려는 범위에 포함되지 않는다. -> 시작인덱스부터 끝인덱스-1까지

생략

  • 시퀀스객체[:끝인덱스] -> 처음부터

  • 시퀀스객체[시작인덱스:] -> 끝까지

  • 시퀀스객체[:] -> 전체 복사

  • 시퀀스객체[:끝인덱스:증가폭]

  • 시퀀스객체[시작인덱스::증가폭]

  • 시퀀스객체[::증가폭]

  • 시퀀스객체[::] -> 전체 복사

  • 시퀀스객체[::-1] -> 뒤집기
    슬라이스의 인덱스 증가폭을 음수로 지정할 때는 끝인덱스보다 시작인덱스를 더 크게 지정해야 한다.

  • 시퀀스객체[0:len(시퀀스객체)] -> 전체 복사

  • 시퀀스객체[:len(시퀀스객체)] -> 전체 복사

range는 요소가 모두 표시되지 않고 생성 범위만 표시된다.

할당

튜플, range, 문자열은 읽기 전용으로 할당 불가능 -> TypeError 발생

슬라이스로 범위를 지정하여 여러 요소에 값을 할당

  • 시퀀스객체[시작인덱스:끝인덱스] = 시퀀스객체
    원래 있던 리스트가 변경된다.(새 리스트는 생성되지 않음)
    요소 개수를 맞추지 않아도 알아서 할당한다.

인덱스를 건너뛰면서 할당

  • 시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭] = 시퀀스객체
    슬라이스 범위의 요소 개수와 할당할 요소 개수가 일치해야 한다. -> ValueError 발생

삭제

  • del 시퀀스객체[시작인덱스:끝인덱스]
  • del 시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭]
    나머지 조건은 할당과 동일하다.
profile
Win or Learn

0개의 댓글