[Python] 컬렉션 타입 이해(List)


리스트 & 튜플

  • 복수개의 값을 담을 수 있는 데이터 구조
  • list : mutable(생성된 후에 변경 가능)
  • tuple : immutable (생성된 후에 변경 불가능)

리스트 초기화 방법

  1. []안에 값을 담아서 생성
  2. list[] 함수로 생성
  3. str.split() 함수로 생성

Alt text

리스트 indexing

  • 문자열의 인덱싱과 동일하게 동작
  • [i] - i번째 원소를 반환
  • i가 음수인 경우도 가능하며 마지막원소가 -1로 하여 앞으로 갈때마다 1씩 감소함

리스트 개별 아이템에 접근

  • 인덱스에 접근하여 값을 업데이트 가능

  • 문자열과 튜플은 불변(immutable) 이므로 아래처럼 접근하면 error!
    Alt text

  • 문자열의 경우는 아래처럼 변경해야 함
    Alt text

  • 리스트는 불변이 아니기 때문에 인덱스로 접근하여 변경 가능
    Alt text

리스트 slicing

a = [1, 2, 3, 4, 5, 6, 7, 8]
print(a[4:7])
[5, 6, 7]
  • slicing은 increment가 기본으로 1이고 이를 지정하여 바꿔줄 수 있다.
  • start : end : increment
    a = [1, 2, 3, 4, 5, 6, 7, 8]
    print(a[1:7:2])
    print(a[1:7:4])
    
    [2, 4, 6]
    [2, 6]
    

list 멤버 함수

  • 생성된 리스트 객체에 동작하는 함수
  • list. + tab을 누르면 확인 가능
  • append() : 리스트의 끝에 항목을 추가함
a = [1, 2, 3, 4, 5]
a.append(10)
print(a)

b = [1, 2, 3, 4, 5]
c = [6, 7, 8, 9, 10]
b.append(c)
print(b)
[1, 2, 3, 4, 5, 10]
[1, 2, 3, 4, 5, [6, 7, 8, 9, 10]]
  • extend() : 리스트를 연장. +=로도 가능
d = [1, 2, 3, 4, 5]
e = [6, 7, 8, 9, 10]
d.extend(e)
print(d)

f = [1, 2, 3, 4, 5]
g = [6, 7, 8, 9, 10]
f += g
print(f)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • insert()
    • 리스트의 원하는 위치에 추가 가능
    • 앞에는 인덱스, 뒤에는 아이템을 명시
a = [1, 3, 4, 5, 6]
a.insert(1, 40)
print(a)
[1, 40, 3, 4, 5, 6]
  • remove()
    • 값으로 항목 삭제
    • 값이 여러개라면 맨 앞만 지움
    • 존재하지 않는 값을 지우면 error!
a = [1, 2, 3, 4, 2]
a.remove(2)
print(a)
[1, 3, 4, 2]
  • pop()
    • 지우고자 하는 아이템을 반환 후, 삭제
    • 인덱스로 삭제
    • 인덱스를 명시하지 않으면 마지막것이 삭제됨
a = [1, 2, 3, 4, 5]
d = a.pop(2)
print(a)
print(d)
[1, 2, 4, 5]
3
  • index()
    • 찾고자 하는 값의 인덱스 반환
    • 존재하지 않는 것을 찾으면 error!
a = [2, 6, 7, 9, 10]
a.index(6)
1
  • in 키워드
    • 리스트 내에 해당 값이 존재하는지 확인
    • value in list
    • True, False 중 한가지로 반환
a = [1, 2, 3, 4, 5, 10]
b = 7
c = 10

d = b in a #False
e = c in a #True

print(d, e)
False True
  • 정렬
    • sort() : 리스트 자체를 내부적으로 정렬
a = [9, 10 ,7, 19, 1, 2, 20, 21, 7, 8]
a.sort()
print(a)

a.sort(reverse=True) # 내림차순
print(a)
[1, 2, 7, 7, 8, 9, 10, 19, 20, 21]
[21, 20, 19, 10, 9, 8, 7, 7, 2, 1]
  • sorted() : 리스트의 정렬된 복사본을 반환
a = [9, 10 ,7, 19, 1, 2, 20, 21, 7, 8]
b = sorted(a)

print(a)
print(b)
[9, 10, 7, 19, 1, 2, 20, 21, 7, 8]
[1, 2, 7, 7, 8, 9, 10, 19, 20, 21]