[Python] 컬렉션 타입 이해(List)
리스트 & 튜플
- 복수개의 값을 담을 수 있는 데이터 구조
- list : mutable(생성된 후에 변경 가능)
- tuple : immutable (생성된 후에 변경 불가능)
리스트 초기화 방법
- []안에 값을 담아서 생성
- list[] 함수로 생성
- str.split() 함수로 생성
리스트 indexing
- 문자열의 인덱싱과 동일하게 동작
- [i] - i번째 원소를 반환
- i가 음수인 경우도 가능하며 마지막원소가 -1로 하여 앞으로 갈때마다 1씩 감소함
리스트 개별 아이템에 접근
인덱스에 접근하여 값을 업데이트 가능
문자열과 튜플은 불변(immutable) 이므로 아래처럼 접근하면 error!
문자열의 경우는 아래처럼 변경해야 함
리스트는 불변이 아니기 때문에 인덱스로 접근하여 변경 가능
리스트 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]