Note/Python
파이썬 기초 문법 (2) - 리스트
HanJW96
2023. 2. 13. 14:34
리스트(List)
- 가장 많이 사용되는 연속형 데이터 타입이자, 굉장히 유연한 구조를 가지고 있어 대부분의 데이터를 편하게 다룰 수 있다.
- 파이썬에서 [ 와 ]를 이용하여 표현한다. e.g. [1, 2, 3]
- 리스트의 원소는 쉼표로 구분되며, 리스트의 원소는 아무 데이터 타입이나 가능하다. 리스트조차 가능하다.
- 리스트를 이용하면 파이썬에서 다루는 대부분의 데이터는 아무 무리없이 다룰 수 있다. 하지만 수정이 자유롭기 때문에 수정을 하면 안되는 경우에는 사용하면 안된다.
리스트를 만드는 방법
L = [1, 2, 3]
L1 = [] # empty list
L2 = list() # 빈 리스트를 만드는 같은 방법
L3 = [1, "Hi", 3.14, [1, 2, 3]] # 리스트에는 다양한 타입의 원소를 다 포함할 수 있다. 심지어 리스트도.
L3

L4 = [[1, 2],
[3, 4]] # 2x2 행렬 표현처럼 사용할 수 있다. 이를 2차원 리스트라고 한다.
L4 # 실제로는 2개의 리스트를 원소로 가지는 리스트이다.
Indexing (***)
- 연속형 데이터들은 하나의 변수에 여러가지 데이터를 가지기 때문에 여러 데이터를 접근하는 방법이 필요하다.
- 이를 위해 indexing이라는 기법이 있다. 말그대로 index를 통해 접근(access)하는 방법이다.
- 리스트의 index는 맨 앞부터 0으로 시작하며, 1씩 증가하는 정수 index를 사용한다.
e.g. [1, 2, 3]이면 첫번째 원소는 index가 0이고, 두번째 원소는 index가 1이다.
- 파이썬에서는 음수 index도 제공하는데, 이는 뒤쪽부터 접근할 수 있는 방법이다.
e.g. [1, 2, 3]이면 뒤에서 첫번째(맨 마지막)원소는 index가 -1이고, 뒤에서 두번째 원소는 index가 -2이다.
- index를 통해 접근하는 방법은 해당 변수이름에 []를 사용하며, []안에 index를 넣어서 접근할 수 있다.
e.g L = [1, 2, 3]이면 L[0]은 1이고, L[2]는 L[-1]이며 3이다.
L = [1, 2, 3, 4, 5]
L[0] ==>1
L[4] ==>5
# L에 없는 index는?
L[9]
# L의 마지막 원소
L[-1] ==> 5
L[0] + L[1] ==> 3
L2 = [1, [2, 3], 5]
# L2에서 2에 접근하기 위해 indexing을 해보자.
temp=L2[1] #temp 는 L2의 두 번째 인덱스 이다. 즉 temp = [2,3]
temp[0] #temp 의 첫번째 인덱스는? 2

L2[1][0] #L2의 두번째 인덱스의 첫번째 인덱스 즉 temp[0]과 같다
출력물 ==> 2
Slicing (**)
- 슬라이싱은 리스트의 일부분만 잘라낸다는 의미이다. (말그대로 슬라이싱)
- 리스트의 일부만 사용하고 싶을 때 쓰는 기법이며, indexing을 범위로 하는 느낌이다.
- 리스트의 index와 :를 사용하여 슬라이싱을 할 수 있다.
e.g. L = [1, 2, 3, 4] L[0:2]는 [1, 2]이다.
L = [1, 2, 3, 4, 5]
# L의 첫번째부터 index2 까지 자르기
L[0:2] #L[0] , L[1] = L[:2]
출력물 ==> [1,2]
# L의 두번째부터 index4 까지 자르기
L[1:4] # L[1], L[2], L[3]
출력물 ==> [2,3,4]
# 시작 index를 생략하면, 자동으로 index는 0이 된다. (맨 처음)
L[:4]
출력물 ==> [1,2,3,4]
# 끝 index를 생략하면, 자동으로 index는(리스트의 길이)가 된다. (맨 마지막) Q. 왜 리스트의 길이일까?
print(L[2:len(L)]) ### len(L) = 5
print(L[2:])

리스트 연산하기
문자열때와 마찬가지로, 리스트도 더하기, 곱하기 연산이 존재한다. 어떤 의미일지 생각해보자.
L = [1, 2, 3]
L2 = [4, 5]
L + L2 # list concatenation
결과 =>[1, 2, 3, 4, 5]
L * 3
결과 =>[1, 2, 3, 1, 2, 3, 1, 2, 3]
***리스트 수정하기
L2[0] = 144
print(L2)
L[2] =5
print(L)