리스트
- 순서를 가지는 객체의 집합
- 대괄호()로 감싸 주고 각 요소값은 쉼표(,)로 구분
- 리스트 안에는 어떠한 자료형도 포함시킬 수 있음
변수를 만드는 여러 가지 방법
[a,b] = ['python', 'life']
print(a)
print(b)
다양한 자료형을 함께 사용 가능
mix_list = ["유재석", 20, True, 3.1]
print(mix_list)
num_list = [5, 2, 3, 1, 4]
mix_list = ["유재석", 20, True, 3.1]
num_list.extend(mix_list)
print(num_list)
리스트의 인덱싱
a = [1, 2, 3]
print(a)
print(a[0])
print(a[0] + a[2])
a = [1, 2, 3, ['a', 'b', 'c']]
print(a[-1][0])
a = [1, 2, ['a', 'b', ['Life', 'is']]]
print(a[2][2][0])
리스트의 슬라이싱
a = [1, 2, 3, 4, 5]
print(a[0:2])
a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
print(a[2:5])
print(a[3][:2])
리스트 연산하기
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)
a = [1, 2, 3]
print(a * 3)
리스트 길이구하기
a = [1, 2, 3]
print(len(a))
리스트에서 값 수정, 삭제
- del 함수는 파이썬이 자체적으로 가지고 있는 삭제 함수
a = [1, 2, 3]
a[2] = 4
print(a)
a = [1, 2, 3]
del a[1]
print(a)
리스트 관련 함수들
subway1 = 10
subway2 = 20
subway3 = 30
subway = [10, 20, 30]
print(subway)
subway_1 = ["유재석", "조세호", "박명수"]
print(subway_1)
print(subway_1.index("조세호"))
subway_1.append("하하")
print(subway_1)
subway_1.insert(2, "양세형")
print(subway_1)
print(subway_1.pop())
print(subway_1)
subway_1.append("유재석")
print(subway_1.count("유재석"))
subway_1.clear()
print(subway_1)
리스트 정렬(sort, sorted)
- sort()는 리스트 자체를 내부적으로 정렬
- sorted()는 리스트의 정렬된 복사본 반환
num_list = [5, 2, 3, 1, 4]
sort_ed = sorted(num_list)
print(sort_ed)
print(num_list)
num_list.sort()
print(num_list)
리스트 뒤집기(reverse)
- reverse 함수는 리스트를 역순으로 뒤집어 줌
- 그저 현재의 리스트를 그대로 거꾸로 뒤집음
a = ['a', 'c', 'b']
a.reverse()
print(a)
위치 반환(index)
- 리스트에 존재하지 않는 값을 입력하면 값 오류(ValueError)가 발생
a = [1,2,3]
print(a.index(3))
리스트에 요소 삽입(insert)
- insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수
a = [1,2,3]
a.insert(0, 4)
print(a)
리스트 요소 제거(remove)
- remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제
a = [1, 2, 3, 1, 2, 3]
a.remove(3)
print(a)
리스트 요소 끄집어내기(pop)
- 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제
a = [1, 2, 3, 1, 2, 3]
print(a.pop())
print(a)
리스트에 포함된 요소 x의 개수 세기(count)
a = [1, 2, 3, 1, 2, 3]
print(a.count(1))
리스트 확장(extend)
- extend(x)에서 x에는 리스트만 올 수 있음
- 원래의 a 리스트에 x 리스트를 더함
a = [1,2,3]
a.extend([4,5])
print(a)
b = [6, 7]
a.extend(b)
print(a)
리스트 복사하기
a = [1, 2, 3]
b = a
c = a[:]
d = list(a)
print(id(a))
print(id(b))
print(id(c))
print(id(d))
print(a is b)
print(a is c)
print(a is d)
from copy import copy
a = [1, 2, 3]
b = copy(a)
print(id(a))
print(id(b))
print(a is b)
복사
얕은 복사(shallow copy)
- 슬라이싱 또한 얕은 복사에 해당
- mutable객체 안에 mutable객체인 경우 문제가 생김(리스트안에 리스트)
from copy import copy
a = [1, 2, [8, 9]]
b = a.copy()
c = a[:]
d = list(a)
a[2][1] = 10
print(a)
print(b)
print(c)
print(d)
깊은 복사(deepcopy)
- 깊은 복사는 내부에 객체들까지 모두 새롭게 copy 되는 것
import copy
a = [1, 2, [8, 9]]
b = copy.deepcopy(a)
c = a[:]
d = list(a)
a[2][1] = 10
print(a)
print(b)
print(c)
print(d)
여러 시퀀스 순회(zip)