본문 바로가기
파이썬/Basics(기초)

[Python] 6. 파이썬 리스트 인덱싱, 슬라이싱, 연산

by 쿠킷리스트 2021. 9. 25.

학습내용


리스트(list)

 리스트는 시퀸스 자료구조 중 하나로 객체들을 연결한 자료구조.

list = [1, 2, 3, 4, 5]
  • 5개의 정수 객체를 원소로 가지고 있는 시퀸스이다.
  • 0번째 인덱스 엘리먼트는 1, 1번째 인덱스 엘리먼트는 2, ···.
a = []
b = [1,2,3,4,5]
c = ['I','am','studying','Python']
d = [1,2,3,'studying','Python']
e = [1,2,3,['studying','Python']]
  • 비어 있는 리스트를 만들 수 있다. (비어 있는 리스트는 a=list()로 생성할 수도 있다.)
  • 리스트 안에는 어떠한 자료형(정수, 소수, 문자열, 리스트 등)도 포함이 가능하다.
  • 형태가 다른 자료형을 함께 사용할 수 있다.

리스트의 인덱싱(Indexing)

 문자열처럼 인덱싱을 사용할 수 있다.

a = [1,2,3.1,'I','am','studying','Python']

a[0] #1
a[0]+a[1] #3
a[0]+a[2] #4.1
a[4]+a[5] #amstudying

a[0]+a[4] #Error
  • a[0]은 0번째 인덱스 엘리먼트인 '1'.
  • 인덱싱을 활용해서 더하기가 가능하다. 정수 + 정수, 정수 + 소수, 문자열 + 문자열 등이 가능하다.
  • 숫자(정수, 소수)와 문자열은 연산이 불가능하다.
#이중 리스트
a = [1,2,3,['a','b','c']]
a[-1] #['a', 'b', 'c']
a[3] #['a', 'b', 'c']

a[-1][0] #a
a[-1][1] #b
a[-1][2] #c
  • 이중 리스트 a는 4개의 엘리먼트를 가지고 있다. (정수, 정수, 정수, 리스트)
  • 리스트 안에 있는 리스트 값을 인덱싱 하고 싶을 때는 a[ ][ ] 대괄호를 두번 써주면 된다.
#삼중 리스트
a = [1,2,3,['a','b',['I','Python']]]

a[3] #['a', 'b', ['I', 'Python']]
a[3][2] #['I', 'Python']
a[3][2][1] #Python
  • 삼중 리스트에서도 인덱싱을 활용할 수 있다.

리스트의 슬라이싱(Slicing)

 문자열처럼 슬라이싱을 사용할 수 있다.

a = [1,2,3,4,5]

a[1:3] #[2,3]
a[2:] #[3, 4, 5] 
a[:2] #[1, 2] 
a[::2] #[1, 3, 5]
  • 문자열에서 활용하던 슬라이싱을 그대로 사용할 수 있다.
#중첩된 리스트에서 슬랑이싱
a = [1,2,3,['a','b','c'],4,5]

a[2:5] #[3, ['a', 'b', 'c'], 4]
a[2:5][1] #['a', 'b', 'c']
a[3] #['a', 'b', 'c']
a[3][:2] #['a', 'b']
  • 이중, 삼중 리스트에서도 슬라이싱이 가능하다.

리스트의 연산

a = [1,2,3]
b = [4,5,6]
c = ['Big', 'Data']

a+b+c #[1, 2, 3, 4, 5, 6, 'Big', 'Data']
a*b #Error
a*3 #[1, 2, 3, 1, 2, 3, 1, 2, 3]

a = [1,2,3]
a[2] + "hi" #Error
str(a[2]) + "hi" #3hi str을 사용해서 정수를 문자열로 변경해서 연산
  • 리스트에서 (+)는 각 엘리먼트들이 하나의 리스트에 모이는 것.
  • (*)의 경우 '반복하기'이다.
  • 정수와 문자를 더하고 싶을 때 str을 사용해 정수를 문자열로 바꾼뒤 연산하면 가능.
#리스트 길이구하기
a = [1,2,3,4,5]
len(a) #5
  • 길이를 구할 때 len 함수를 사용하지만, 이를 길이를 구한다기 보다 리스트 안의 총 요소(원소, 엘리먼트) 수를 구한다고 생각.

댓글