1. List1.1 list의 사칙연산1.2 메서드1.2.1 append1.2.2 clear1.2.3 copy1.2.4 count1.2.5 extend1.2.6 index1.2.7 insert1.2.8 pop1.2.9 remove1.2.10 reverse1.2.11 sort
1. List
리스트는 순서를 가진 데이터들의 집합입니다.
리스트는 순서를 가진 데이터들의 집합(Sequence)을 의미합니다. 다른 프로그래밍 언어를 사용하신 분들이라면 배열(Array)이라는 이름으로 더 친숙할 것입니다.
a = [1, 2, 3, 4, 5]
리스트는 값의 변경이 가능하며, 다른 자료형을 입력 할 수 있습니다. 리스트 안에 리스트로 다차원의 리스트를 만드는 것도 가능합니다.
데이터 분석에서는 행렬을 표현하는 방법으로 리스트를 사용합니다.
입력
a[0] = 10000 a b=[['a','b','c'], [1, 2, 3]] b[1][2] s = 'leehojun' s[0] s[0] = 'k'
출력
[10000, 2, 3, 4, 5] 3 'l' ERROR #문자열 할당은 지원되지 않습니다.
아래 보시는 것처럼 값의 중복을 허락하며(
set
자료형은 불가능), 인덱스를 사용하여 인덱싱과 슬라이싱을 사용할 수 있습니다.입력
a = [1, 2, 3, 4, 5, 5] a[0] #indexing a[0:3] #slicing->자료형[start:stop:step]
출력
1 [1, 2, 3]
1.1 list의 사칙연산
직접 실습을 해보시면서 익혀보세요. 참고로 리스트 안에 있는 값들을 3씩 곱하고 싶다면(
[1, 2, 3]
→ [3, 6, 9]
) for문을 사용하거나 numpy를 사용하셔야 합니다. a*3은 리스트형을 3번만큼 연결한다는 뜻이에요.입력
a = [1, 2, 3] a + a a + 3 a + [1] a - a a - [1] a / 3 a // a a * a a * 3 a * [3]
출력
[1, 2, 3, 1, 2, 3] # a + a ERROR # a + 3 [1, 2, 3, 1] # a + [1] ERROR # a - a ERROR # a - [1] ERROR # a / 3 ERROR # a // a ERROR # a * a [1, 2, 3, 1, 2, 3, 1, 2, 3] # a * 3 ERROR # a * [3]
1.2 메서드
리스트의 내장 메서드는 굉장히 중요합니다. 이번 챕터부터는 리스트의 메서드를 실습해보도록 할게요. 각 자료형의 메서드 확인은
dir(자료형)
을 통해 가능합니다. 예를 들어 아래처럼 확인이 가능해요.l = [1, 2, 3] dir(l)
1.2.1 append
우선 append 입니다. 리스트 맨 뒤에 값을 붙이는 메서드입니다.
입력
a.append(10) a
출력
[1, 2, 3, 10]
1.2.2 clear
안에 있는 원소들을 다 비우는 메서드입니다.
입력
a.clear() a
출력
[]
1.2.3 copy
a라는 리스트를 만들고, b와 c에도 a와 똑같은 값을 할당하고 싶습니다. 그리고 c의 값을 수정할거예요.
입력
a = [1, 2, 3] b = a c = b c[0] = 10000 a
출력
[10000, 2, 3]
c를 수정하였지만 a의 값도 수정이 되었습니다.
위 코드와 같이
b = a
, c = a
는 새로운 리스트에 독자적인 값이 할당되는 것이 아닌 기존 리스트 a를 가리키고 있는 꼴이 됩니다. 그래서 위 코드를 실행하면 c의 값이 아닌 a의 값이 수정되는거에요.우리가 원하는 결과값을 얻고 싶다면 copy 메서드를 사용하여 리스트를 복사시켜 줍니다.
입력
a = [1, 2, 3] b = a.copy() c = b.copy() c[0] = 10000 print(f'a는 : {a}, c는 : {c}')
출력
a는 : [1, 2, 3], c는 : [10000, 2, 3]
1.2.4 count
리스트 안에 특정 값이 얼마나 있는지를 세주는 메서드입니다.
입력
a = [1, 2, 3, 1, 2, 3, 1, 1, 1] a.count(1)
출력
5
1.2.5 extend
append와 같이 리스트 마지막에 값들을 추가해주는 메서드 입니다.
append
는 한 개만 붙일 수 있지만extend
는 많은 값들을 붙일 수 있어요.입력
b = [1, 2, 3, 4] c = [1, 2, 3, 4] b.extend([5, 6, 7]) c.append(5, 6, 7) c.append([5, 6, 7])
출력
[1, 2, 3, 4, 5, 6, 7] ERROR [1, 2, 3, 4, [5, 6, 7]] #리스트 형태로 붙어 2차원 행렬이 됩니다.
1.2.6 index
특정 값의 위치를 반환해주는 메서드입니다.
입력
a = [10, 1, 1, 11, 2, 23, 12] a.index(11) a[a.index(11)] a[:a.index(11)]
출력
3 # a.index(11) 11 # a[a.index(11)], 인덱싱 [10, 1, 1] #a[:a.index(11)], 슬라이싱
1.2.7 insert
마찬가지로 특정 값을 추가해주는 메서드입니다. 첫 번째 인자값으로는 인자값이 들어갈 index와 두번째 값에는 그 위치에 들어갈 값을 넣어주면 돼요.
입력
a.insert(2, 10000000) a
출력
[10, 1, 10000000, 1, 11, 2, 23, 12]
1.2.8 pop
리스트 맨 마지막에 있는 값을 리턴해주는 메서드입니다. 파라미터로 뽑을 값의 위치를 정해줄 수도 있어요.
실행 후에는 해당 값이 사라지게 됩니다.
입력
print(a.pop()) print(a.pop(2)) a
출력
12 10000000 [10, 1, 1, 11, 2, 23]
1.2.9 remove
어떤 값을 삭제해주는 메서드입니다. 여러 값들이 중복되어 있을 경우 전체 값을 삭제하는 것이 아닌 처음 만난 값만 삭제되니 이 부분 유의해주세요! 모두 삭제하고 싶으면 앞에서 배웠던 count와 뒤에서 배울 for문을 이용하여 count만큼 반복해서 값을 삭제해야 합니다. 아직 반복문을 배우지 않았으니 이 부분은 넘어가도록 할게요.
입력
a = [1, 1, 1, 2, 3, 2, 1, 2] a.remove(1) a
출력
[1, 1, 2, 3, 2, 1, 2]
1.2.10 reverse
리스트를 뒤집는 메서드입니다. 역정렬이 아니라 역순으로 리턴됩니다.
입력
a = [1, 2, 3, 4, 5, 1, 2] a.reverse() a
출력
[5, 4, 3, 2, 1, 2, 1]
1.2.11 sort
리스트를 정렬시켜주는 메서드입니다. 리스트의 역정렬을 하고 싶으면 sort를 한 뒤 reverse를 사용해주면 되겠죠?
입력
a.sort() a
출력
[1, 1, 2, 2, 3, 4, 5]