Note/Python

파이썬 기초 문법 (2) - 리스트

HanJW96 2023. 2. 13. 14:34

리스트(List)

  • 가장 많이 사용되는 연속형 데이터 타입이자, 굉장히 유연한 구조를 가지고 있어 대부분의 데이터를 편하게 다룰 수 있다.
  • 파이썬에서 [  ]를 이용하여 표현한다. e.g. [1, 2, 3]
  • 리스트의 원소는 쉼표로 구분되며, 리스트의 원소는 아무 데이터 타입이나 가능하다. 리스트조차 가능하다.
  • 리스트를 이용하면 파이썬에서 다루는 대부분의 데이터는 아무 무리없이 다룰 수 있다. 하지만 수정이 자유롭기 때문에 수정을 하면 안되는 경우에는 사용하면 안된다.

리스트를 만드는 방법

L = [123]
L1 = [] # empty list
 
L2 = list() # 빈 리스트를 만드는 같은 방법
 
 
L3 = [1"Hi"3.14, [123]] # 리스트에는 다양한 타입의 원소를 다 포함할 수 있다. 심지어 리스트도.
L3
L4 = [[12],
     [34]] # 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 = [12345]
 
L[0]   ==>1
L[4]   ==>5

# L에 없는 index는?
L[9]

# L의 마지막 원소
L[-1] ==> 5
L[0] + L[1] ==> 3
 
L2 = [1, [23], 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 = [12345]
 
# 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:])
둘 모두 [3,4,5]가 나온다. 

리스트 연산하기

문자열때와 마찬가지로, 리스트도 더하기, 곱하기 연산이 존재한다. 어떤 의미일지 생각해보자.

L = [123]
L2 = [45]
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)

리스트 관련함수

 1.리스트에 원소 추가하기 append() (***)

 2.리스트 원소 정렬하기 sort()

 3.리스트 뒤집기(정렬 X) reverse()

 3.리스트에서 원소 제거하기 pop()