List
List
- list는 여러 개의 data 묶음
- 각각의 요소는 index로 접근 가능
- index는 0부터 시작
- list_name = [] : empty ilst 생성
- list의 element로는 다양한 자료형이 섞여서 사용될 수도 있음
- mutable: list는 index마다 요소에 접근하여 요소 값을 바꿀 수 있음
Operation
- len(L): list L의 길이 반환
- max(L): list L의 요소 중 최대값 반환
- min(L): list L의 요소 중 최소값 반환
- sum(L): list L의 모든 요소를 더한 값 반환
- sorted(L): list L의 요소를 오름차순으로 정렬해 복사한 또 다른 list 반환
- L1 + L2: L2의 모든 요소들이 L1 list의 뒤로 추가
- L1 * k: L1의 모든 element들을 k번 반복하는 list로 변경
- del L: list L 삭제
- del L[index]: list L의 index 번째 요소 삭제
- x in L: list L의 요소 중 x라는 요소가 있는지 없는지 boolean 값 반환
Methods
- L.append(v): list의 맨 뒤에 v 그대로 삽입
- L.extend(v): list의 맨 뒤에 v의 item을 삽입
- L.insert(i, v): list의 i 번째 index에 v 삽입
- L.clear(): list 비우기
- L.count(v): v가 list 안에 몇 개 있는지 반환
- L.index(v): list에 v가 몇 번째 index에 있는지 찾아 index 반환
- L.index(v, a): list의 [a, ) 번째 요소 중 v가 몇 번째 index에 있는지 찾아 index 반환
- L.index(v, a, b): list의 [a, b) 요소 중 v가 몇 번째 index에 있는지 찾아 index 반환
- L.pop(): list의 마지막 item을 반환하고 list에서 해당 item 삭제
- L.remove(v): list에서 처음으로 등장하는 v 삭제
- L.reverse(): list의 순서 뒤집기
- L.sort(): list를 오름차순으로 정렬
- L.sort(reverse = True): list를 내림차순으로 정렬
Slicing
- L[:]: list L 전체 선택
- L[:a]: list L의 index < a 인 요소들만 선택
- L[a:]: list L의 index > a 인 요소들만 선택
- L[a:b]: list L의 index가 [a, b) 인 요소들만 선택
- L[a:b:c]: list L의 index가 [a, b) 인 요소들을 c 간격으로 선택
Aliasing vs Copying
Aliasing
x = [1, 2, 3, 4, 5]
y = x
y[0] = 0
print(x)
[0, 2, 3, 4, 5]
- C 언어에서 shallow copy 역할
- Aliasing된 list 변수의 요소값을 수정하면 원래의 list 값도 수정된다
Copy
x = [1, 2, 3, 4, 5]
y = x[:]
y[0] = 0
print(x)
print(y)
[1, 2, 3, 4, 5]
[0, 2, 3, 4, 5]
- C 언어에서 deep copy 역할
- Copy된 list 변수의 요소값을 수정하면 copy list의 값만 수정되고 원래의 list 값은 수정되지 않는다
A List of Lists
- 중첩 list
- list의 element가 list인 것
- list[a][b]: list의 a 번째 list의 b 번째 item
- index 접근은 Aliasing
life = [["canada", 76], ["mexico", 72], ["korea", 80]]
canada = life[0]
canada[1] = 100
print(canada)
print(life)
["canada", 100]
[["canada", 100], ["mexico", 72], ["korea", 80]]