
구글 코랩이나 주피터 노트북에서 직접 작성하며 풀어보세요.
리스트는 여러 데이터를 보관하는 자료형이다.
아래처럼 대괄호로 표현한다.
a = []
b = [1, 2, 3]
c = ['life', 'is', 'too', 'short']
d = [1, 2, 'life', 'is']
e = [1, 2, ['life', 'is']]
여러 개를 써서 다차원 리스트를 만들 수도 있다.
아래는 2차원 리스트다.
a = [[1,2], [3,4], [5,6]]
다른 자료형을 리스트 자료형으로 변환하려면 list함수를 사용한다.
a = 'Python'
list(a)
[P, y, t, h, o, n]
[Python]으로 나오지 않고 [P, y, t, h, o, n]으로 나오는 것을 알아야 한다.
문자열 인덱싱과 같다.
a = [1, 2, 3]
print(a[0])
1
리스트와 인덱싱은 둘 다 대괄호로 표현한다.
위의 코드는 'a의 0번째에 접근한다'라는 뜻이라서 1이 나왔다.
a = [1, 2, 3, [4, 5]]
위에서 5만 나오게 하려면 어떻게 하면 될까?

5는 a의 3번째 중에서 1번째다.
따라서 a[3]을 하면 결과로 [4, 5]가 나온다.
이 경우 두 가지 방법이 있다.
b = a[3]
c = b[1]
print(c)
b에 a의 3번째인 [4, 5]를 할당하고
c에 b의 1번째인 [5]를 할당하고
c를 출력하는 방법이다.
근데 이건 딱 봐도 복잡하다.
a[3][0]
print(a)
이렇게 하면 a의 3번째의 0번째만 뽑을 수 있다.
문자열 슬라이싱과 같다.
a = [1,2,3,4,5]
print(a[0:2])
[1, 2]
a의 0번째부터 2번째 전까지(=1번째까지)라는 뜻이라 결과가 [1, 2]로 나온다.
콜론을 두 개 만들면 맨 뒤의 숫자만큼 건너뛰겠다는 뜻이다.
예를 들어
a[0:4:2]
이건 0번째부터 4번째 전까지 2씩 건너뛰겠다는 뜻이라 결과가 [1, 3]으로 나온다.
a[::-1]
처음부터 끝까지 -1씩 건너뛰겠다는 뜻이다.
[-1]은 뒤에서부터 첫 번째라는 뜻이라는 걸 문자열 자료형에서 배웠다.
따라서 이 말은
= 뒤에서부터 하나씩 건너뛰겠다
= 거꾸로 쓰겠다
그래서 결과가 [5, 4, 3, 2, 1]로 나온다.
리스트끼리 덧셈과 곱셈을 할 수 있다.
a = [1, 2, 3]
b = [4, 5, 6]
a + b
결과는 [5, 7, 9]가 아니라 [1, 2, 3, 4, 5, 6]이다.
a = [1, 2, 3]
a*3
결과는 [3, 6, 9]가 아니라 [1, 2, 3, 1, 2, 3, 1, 2, 3]이다.
문자열처럼 내장함수인 len()함수를 사용한다.
a = [1, 2, 3]
len(a)
3
a = [6, 7, 8]
a[2] = 4
[6, 7, 4]
a의 2번째 값을 4로 바꿔서 결과가 [6, 7, 4]로 나왔다.
a = [1, 2, 3]
a[2] = 4
결과 값은 [1, 4, 3]이 아니라 [1, 2, 4]다.
2를 바꾸는 게 아니라 2번째를 바꾸는 것이다.
인덱싱과 조합해서 특정 값만 삭제할 수 있다.
(del = delete)
a = [1, 2, 3, 4, 5]
del a[2]
[1, 2, 4, 5]
a의 2번째인 3이 삭제되었다.
슬라이싱과도 조합할 수 있다.
a = [1, 2, 3, 4, 5]
del a[2:]
[1, 2]
a의 2번째부터 끝까지 삭제한 걸 확인할 수 있다.
문자열처럼 리스트도 리스트에서만 사용할 수 있는 전용 함수가 있다.
값 하나를 추가하는 함수
append(추가할 값) 의 형태로 작성한다.
a = [1, 2, 3]
a.append(4)
print(a)
[1, 2, 3, 4]
참고로 이렇게 사용할 수 없다.


추가할 값에 대괄호를 씌우면 이렇게 나온다.
a = [1, 2, 3]
a.append([4])
print(a)
[1, 2, 3, [4]]
값 하나 이상을 추가하는 함수다.
extend([추가할 값], [추가할 값])의 형태로 사용한다.
append는 하나만 추가하기 때문에 리스트를 씌우지 않아도 되지만 extend는 리스트를 꼭 씌워줘야 한다.
a = [1, 2, 3]
a.extend([4, 5])
print(a)
[1, 2, 3, 4, 5]
위의 리스트 덧셈과 비슷해보인다.
a = [1, 2, 3]
print(a+[4, 5])
[1, 2, 3, 4, 5]
이 경우 print(a)를 하면 [1, 2, 3]이 나온다.
extend는 a 자체를 변경한다.
extend 함수를 사용하지 않고도 추가할 수 있다.
a = [1, 2, 3]
a = a + [4, 5]
print(a+[4, 5])
[1, 2, 3, 4, 5]
원하는 위치에 값을 추가한다.
insert(원하는 위치, 추가할 값) 의 형태로 사용한다.
a = [1, 2, 3]
a.insert(0,4)
a
[4, 1, 2, 3]
0번째에 4를 추가하여 결과 값이 [4, 1, 2, 3]으로 나왔다.
숫자나 문자를 정렬하는 함수다.
a = [1, 4, 3, 2]
a.sort()
print(a)
[1, 2, 3, 4]
기본적으로 오름차순으로 정렬한다.
괄호 안에 reverse=True 값을 넣어주면 내림차순으로 정렬한다.
a = [1, 4, 3, 2]
a.sort(reverse=True)
print(a)
[4, 3, 2, 1]
위에서 배운 sort(reverse=True)는 내림차순으로 정렬하는 것이고,
reverse는 말 그대로 거꾸로 작성하는 것이다.
a = [1, 4, 3, 2]
a.reverse()
print(a)
[2, 3, 4, 1]
위에서 배운 것처럼 a[::-1]을 사용해도 된다.
특정 값의 위치를 찾는다.
문자열의 find함수와 비슷하다.
a = [1, 2, 3, 4]
a.index(3)
2
a에서 3의 위치는 2번째라서 값이 2로 나왔다.
문자열의 find함수는 찾으려는 요소가 없으면 결과 값이 -1로 나오지만,
index 함수는 찾으려는 요소가 없으면 에러가 발생한다.

a의 리스트 중 5가 없으니 정신 차리라고 친절히 알려준다.
특정 값을 삭제하고 싶을 때 위에서 배운 것처럼 내장 함수 del로 삭제할 수 있지만,
리스트 전용 함수인 remove로도 삭제할 수 있다.
del은 특정 위치의 값을 삭제하고
remove는 특정 값을 삭제한다.
del을 사용한 경우
a = [1, 2, 3, 4, 5]
del a[2]
[1, 2, 4, 5]
remove를 사용한 경우
a = [1, 2, 3, 4, 5]
a.remove(2)
[1, 3, 4, 5]
del a[삭제할 위치의 값] → 2번째인 3이 삭제됨
a.remove(삭제할 값) → 2가 삭제됨
내장 함수 del은 변수 앞에 사용하고
전용 함수 remove는 변수 뒤에 . 을 찍고 사용한다.
만약 리스트 안에 중복 값이 있다면
a = [1, 2, 3, 1, 2, 3]
a.remove(2)
[1, 3, 1, 2, 3]
이렇게 제일 먼저 발견된 값만 삭제한다.
pop은 삭제하는 게 아니라
가장 뒤에 있는 값을 뽑아내는 함수다.
a = [1, 2, 3]
a.pop()
print(a)
[1, 2]
위에서 3은 remove나 del처럼 삭제된 게 아니라서 딴 데다 저장 가능하다.
특정 값의 개수를 센다.
문자열 자료형의 count함수와 같다.
a = [1, 2, 3, 1]
a.count(1)
2
a의 리스트 중 1의 개수인 2가 결과 값으로 나왔다.
여기까지 파이썬 리스트 자료형에 대한 설명이었습니다.
수정이 필요한 부분이나 이해가 안 가는 부분이 있다면 언제든 말씀해주세요!^0^
다음 글에서는 리스트 자료형 실습 문제를 풀어볼게요.
그럼 이만
총총