본문 바로가기
2학년 2학기/데이터 사이언스 입문

순서열 -List, tuple

by kkkkk1023 2024. 9. 19.
순서열: 여러 개의 데이터를 순차적으로 나열해놓은 자료구조

 

List

: 순차적 데이터의 저장을 위해 사용되는 자료구조 / 순서 O, 수정 O

 

a = [1, 2, 3, 4, 5]

# 또는

a = list((1, 2, 3, 4, 5))

 

 

[리스트 내 원소 접근]

: 데이터의 위치 번호를 사용하여 리스트 내 원소 데이터로 접근하는 방법

a = [1, 2, 3, 4]
a[0] # 1

 

 

🚨 음수 인덱스?

: 음수 인덱스는 List의 길이에서 뺀 값으로 접근한다.

a = [1, 2, 3, 4]
a[-1] # 4
# a[-1] == a[len(a)-1] == a[4-1] = a[3]

 

 

❓슬라이싱

: List의 범위 내 모든 데이터를 접근

# 기본 형태
list[start:end:inteval] # -> (start <= x < end)

 

 

# 사용 방법

a = [1, 2, 3, 4, 5]

a[0:2] # [1, 2]
a[1:] # [2, 3, 4, 5]
a[:3] # [1, 2, 3]

a[-1:] # a[5-1] ~ 끝까지 -> a[4] ~ a[4] -> [5]
a[:-1] # 처음부터 ~< a[5-1] -> a[0] ~< a[4] -> [1, 2, 3, 4]

a[:3:2] # 처음부터 ~< a[3]까지 2씩 증가 -> a[0], a[2] -> [1, 3] 
a[:3:3] # 처음부터 ~< a[3]까지 3씩 증가 -> a[0], a[3]인데 a[3] 미만까지라서 -> a[0] -> [1]

a[::-1] # 처음부터 끝까지 -1씩 증가 -> 즉, 거꾸로 진행 -> a[4], a[3], a[2], a[1], a[0] -> [5, 4, 3, 2, 1]

 

 

[리스트 내장 메소드]

1. append(x)

  • 리스트의 끝에 항목 x를 추가한다.
  • 사용 예시: list.append(3)

2. extend(iterable)

  • 리스트에 다른 iterable(리스트, 튜플 등)을 이어 붙인다.
  • 사용 예시: list.extend([1, 2, 3])

3. insert(i, x)

  • 인덱스 i에 항목 x를 삽입한다. 기존의 요소들은 오른쪽으로 밀린다.
  • 사용 예시: list.insert(1, 'hello')

4. remove(x)

  • 리스트에서 첫 번째로 등장하는 항목 x를 제거한다. 해당 항목이 없으면 에러가 발생한다.
  • 사용 예시: list.remove(2)

5. pop(i)

  • 인덱스 i에 위치한 항목을 제거하고 반환한다. i를 지정하지 않으면 마지막 항목을 제거하고 반환한다.
  • 사용 예시: list.pop(0) (첫 번째 항목 제거)

6. clear()

  • 리스트의 모든 항목을 제거한다.
  • 사용 예시: list.clear()

7. index(x, start, end)

  • 리스트에서 항목 x의 첫 번째 위치를 반환한다. start와 end 인덱스를 지정하면 해당 범위 내에서 검색한다.
  • 사용 예시: list.index(3)

8. count(x)

  • 리스트에서 항목 x가 몇 번 등장하는지 반환한다.
  • 사용 예시: list.count(2)

9. sort(key=None, reverse=False)

  • 리스트를 정렬한다. key를 통해 정렬 기준을 지정할 수 있으며, reverse=True로 설정하면 내림차순으로 정렬한다.
  • 사용 예시: list.sort()

10. reverse()

  • 리스트의 순서를 뒤집는다.
  • 사용 예시: list.reverse()

11. copy()

  • 리스트의 얕은 복사본을 반환한다.
  • 사용 예시: new_list = list.copy()

 


Tuple

: 순차적 데이터의 저장을 위해 사용되는 자료구조 / 순서 O, 수정 X

a = (1, 2, 3, 4, 5)

 

 

리스트와 마찬가지로 인덱싱, 슬라이싱 모두 가능하다!

 

 

List vs Tuple

List는 수정 가능, Tuple은 수정 불가능

 

메모리 할당

  • 요소의 개수나 크기가 작은 경우, list가 메모를 적세 소요하지만, 요소의 개수가 커지면 list가 메모리를 더 많이 사용한다.
  • 보통의 경우 tuple이 메모리를 더 적게 사용한다.