Data/Python

[Python] 파이썬 리스트 자료형 - 연산, 인덱싱, 슬라이싱, 함수들

재은초 2023. 6. 17. 20:16
반응형

리스트(List)란?

  • 리스트란 복합 데이터의 집합으로, 이런 데이터 타입을 다른 프로그래밍 언어에서는 배열(Array)이라 부르지만 파이썬에서는 리스(List)라고 말한다.
  • 리스트에 저장되는 요소가 모두 같은 타입일 필요는 없으며, 어떤 자료형이든 포함이 가능하다.
  • 리스트에는 요소들이 순서대로 저장되며, 각 요소는 0부터 시작하는 인덱스(index)를 사용하여 접근할 수 있다.
  • 리스트는 그 값을 변경할 수 있는 mutable(변할 수 있는) 타입이다.

 

리스트 선언

  • 대괄호 [] 로 감싸 주고 각 요소들은 쉼표 , 로 구분한다.
리스트명 = [요소1, 요소2, 요소3, ...]
>>> a = list()                             # 비어 있는 리스트
>>> a = []                                 
>>> b = [1, 2, 3]                          # 숫자를 요소값으로 가진 리스트
>>> c = ['Life', 'is', 'too', 'short']     # 문자열을 요소값으로 가진 리스트
>>> d = [1, 2, 'Life', 'is']               # 숫자, 문자을 같이 가진 리스트
>>> e = [1, 2, ['Life', 'is']]             # 리스트 안에 리스트 - 2차원 리스트

 

리스트 요소 선택 - 인덱싱

  • 리스트의 특정 요소에만 접근하고 싶을 때에는 0부터 시작하는 인덱스(index)를 사용한다.
  • 양의 인덱스는 왼쪽부터 시작하며 음의 인덱스는 오른쪽부터 시작한다.
# 리스트 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[-1]
['a', 'b', 'c']                      # a[-1]은 마지막 요소값인 a[3]를 나타냄

# 리스트를 포함한 2중 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]   
>>> a[-1][0]                         
'a'

# 리스트에 리스트를 포함한 3중 인덱싱
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]                       
'Life'

 

리스트 자르기 - 슬라이싱

  • 사용법은 문자열 인덱싱과 동일하며, 인덱싱은 요소 1개를 의미하는 반면에 슬라이싱은 글자 구간을 가르킨다.
  • :의 앞쪽에 위치한 인덱스는 곧바로 시작 인덱스가 되지만, 콜론의 뒤쪽에 위치한 인덱스는 해당 인덱스에서 1을 뺀 인덱스가 마지막 인덱스가 된다.
  • 리스트 자르기는 원본 리스트에는 전혀 영향을 미치지 않으며, 해당 부분에 해당하는 새로운 리스트를 생성하여 반환해 준다.
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2]                       # 처음부터 2번전까지
>>> c = a[2:]                       # 2번째부터 끝까지
>>> b
[1, 2]
>>> c
[3, 4, 5]

# 중첩된 리스트에서 슬라이싱
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5]                          # 마지막 값은 포함 하지 않음
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2]                        # a의 3번째 처음부터 2번전까지 
['a', 'b']

 

리스트 연산

  • 리스트 더하기 (+)
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b         
[1, 2, 3, 4, 5, 6]             

# 숫자와 문자열을 더하고 싶을 때
>>> a = [1, 2, 3]
>>> a[2] + "hi"                # 이는 정수와 문자는 더할 수 없기에 오류

>>> str(a[2]) + "hi"            # 숫자를 문자열의 형태로 바꿔서 합치기
  • 리스트 곱하기 (*)
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
  • 리스트 길이 구하기 (len함수)
# len 함수는 문자열, 리스트외에도 튜플과 딕셔너리에도 사용가능
>>> a = [1, 2, 3]
>>> len(a)
3
  • 리스트 복사하기
# 단순히 리스트를 변수에 대입하면, 리스트 복사가 아니라 원본 리스트 메모리 주소만 전달됨
>>> a = [1, 2, 3]
>>> copy_a = a
>>> copy_a.append(4)

>>> print(copy_a)
>>> print(a)
[1, 2, 3, 4]
[1, 2, 3, 4]
  • 리스트 수정하기
>>> a = [1, 2, 3]
>>> a[2] = 4                  # 단순하게 해당 인덱스 설정후, 값 변경
>>> a
[1, 2, 4]
  • 리스트 삭제하기
# del 함수 사용해 리스트 요소 삭제하기
>>> a = [1, 2, 3]
>>> del a[1]                   # del 사용법 : 'del 객체' 
>>> a
[1, 3]

# 슬라이싱을 활용한 리스트 여러 요소 한번에 삭제
>>> a = [1, 2, 3, 4, 5]
>>> del a[2:]
>>> a
[1, 2]

 

 

리스트 관련 함수들

  • 리스트에 요소 1개 추가(append)
>>> a = [1, 2, 3]
>>> a.append(4)               # .append(x)는 리스트 맨 마지막에 x 추가
>>> a
[1, 2, 3, 4]
>>> a.append([5,6])
>>> a
[1, 2, 3, 4, [5, 6]]          # 리스트에 다시 리스트를 추가한 결과
  • 리스트에 요소 여러개 추가(extend)
>>> a = [1,2,3]
>>> a.extend([4,5])          # .extend(x)에서 x에는 리스트만 올 수 있으며,
>>> a                        # 원래의 a 리스트에 x 리스트를 더하게 된다
[1, 2, 3, 4, 5]				 # 단순 추가는 append
>>> b = [6, 7]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7]
  • 리스트에 요소 삽입(insert)
>>> a = [1, 2, 3]             # insert(a, b)는 리스트의 a번째 위치에 b를 삽입
>>> a.insert(0, 4)            # append()는 리스트 마지막에 삽입
>>> a
[4, 1, 2, 3]                  # 파이썬에서는 숫자를 0부터 센다
>>> a.insert(3, 5)            # 네 번째 요소 위치에 5 값 삽입
>>> a
[4, 1, 2, 5, 3]
  • 리스트 요소 제거(remove)
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)               # .remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수
>>> a
[1, 2, 1, 2, 3]               # 3 값을 2개 가지고 있을 경우 첫 번째 3만 제거

>>> a.remove(3)
>>> a
[1, 2, 1, 2]                  # .remove(3)을 한 번 더 실행하면 다시 3이 삭제
  • 리스트 요소 끄집어내기(pop)
>>> a = [1,2,3]            
>>> a.pop(1)                  # 리스트의 x번째 요소를 돌려주고 그 요소는 삭제
2
>>> a
[1, 3]

>>> a = [1,2,3]               # .pop() 공백이면 맨 마지막 요소를 보여주고 삭제
>>> a.pop()
3
>>> a
[1, 2]
  • 리스트에 포함된 요소 x의 개수 세기(count)
>>> a = [1,2,3,1]
>>> a.count(1)               # .count(x)는 리스트 내에 x가 몇개있는지 보여줌
2
  • 문자열의 join 함수 사용해 리스트 요소 붙이기(join)
>>> a = ['Life', 'is', 'too', 'short'] 
>>> ' '.join(a)
'Life is too short'
  • 리스트 정렬(sort)
>>> a = [1, 4, 3, 2]
>>> a.sort()                  # .sort 함수는 리스트의 요소를 순서대로 정렬
>>> a
[1, 2, 3, 4]

>>> a = ['a', 'c', 'b']       # .sort 함수는 숫자와 알파벳 모두 순서대로 정렬한다
>>> a.sort()
>>> a
['a', 'b', 'c']
  • 리스트 뒤집기(reverse)
>>> a = ['a', 'c', 'b']
>>> a.reverse()               # .reverse 함수는 리스트를 역순으로 뒤집어 준다
>>> a                         # 리스트 요소를 순서대로 정렬한 후 역순 정렬이 아니라 
['b', 'c', 'a']               # 그저 현재의 리스트를 그대로 거꾸로 뒤집는다
  • 위치 반환(index)
>>> a = [1,2,3]               # .index(x)는 리스트에 x 있으면 x 위치 리턴
>>> a.index(3)
2
>>> a.index(0)                # 0은 a 리스트에 존재하지 않기 때문에 오류 발생
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 0 is not in list

 

Reference

반응형