JUST DO IT PROJECT

[문법] Python 자료형: 리스트 List 본문

CSE/Python

[문법] Python 자료형: 리스트 List

웨일.K 2020. 3. 16. 23:48
반응형

파이썬의 기본 자료형은 앞서 살펴본 것 처럼 다음과 같습니다.

  • 숫자형 Numeric: 정수, 실수 (e.g. 1, 3.4)
  • 문자열 String: 문자들의 모음 (e.g. "hello")
  • 불린 Boolean: 참/거짓 (e.g. true, false)
  • 리스트 List: 순서를 가지는 집합, 값을 변경할 수 있음 (e.g. ["hello","world"])
  • 튜플 Tuple: 순서를 가지는 집합. 값을 변경할 수 없움. (e.g. ("hello","world"))
  • 세트 Set: 순서를 가지지 않는 집합. 키가 없음. 중복되는 값 허용 안됨.(e.g. {"hello","world"}, {1,2,3,4}, {1,2,2,3}=={1,2,3})
  • 딕셔너리 Dictionary: 순서를 가지지 않는 집합. 키(key)로 값을 꺼냄.(e.g. {"hello":3,"world":4}, 'hello'는 키, 3은 값)

이 중 리스트와 그 메소드(함수)들에 대해 알아보려고 합니다.

리스트 List

리스트는 파이썬에서 자주 사용되는 자료형으로 순서가 있고, 여러 값을 담아 나열하는 자료형입니다.

리스트 만드는 법

리스트는 대괄호(squared bracket)안에 모든 원소(elements, items)를 넣고, 쉼표(comma)로 각 원소를 구분해서 만들 수 있습니다. 원소의 자료형은 무엇이든 될 수 있습니다. 다른 자료형도 한 리스트 안에 넣을 수 있습니다. 심지어 리스트 자체도 리스트의 원소가 될 수 있죠. 이를 중첩리스트(nested list)라고 부릅니다.

# 빈 리스트
>>> my_list=[]
# 정수 리스트
>>> my_list=[0, 1, 2]
# 다양한 자료형을 포함하는 리스트
>>> my_list=[0, 1.2, 'A', "Hello World", [1, 2]]

리스트 인덱스 List Index

리스트의 각각의 원소에 접근하기 위해서 인덱스를 사용합니다. 인덱스는 정수이고 0부터 시작합니다.
만약 인덱스의 값이 범위를 벗어난다면 IndexError라는 에러가 발생합니다.

>>> a=['p','y','t','h','o','n']
>>> a[0]
'p'
>>> a[6]
IndexError!

중첩리스트는 중첩인덱스를 사용해 접근합니다.

# 중첩 리스트 Nested List
>>> b=[[1,2],[3,4]]
>>> b[0][1]
2

인덱스에 음의 정수를 넣으면 뒤에서부터 셀 수 있습니다.
-1은 마지막 원소를 의미하며, -2는 뒤에서부터 두번째 원소, -n은 뒤에서부터 n번째 원소를 의미합니다.

>>> a=['p','y','t','h','o','n']
>>> a[-1]
'n'

문자열과 마찬가지로 리스트 또한 슬라이싱(slicing)을 통해 원하는 특정 범위의 원소들을 가져올 수 있습니다.

>>> a=['p','y','t','h','o','n']
>>> a[1:3]
['y', 't']
>>> a[3:]
['h', 'o', 'n']
>>> a[:]
['p', 'y', 't', 'h', 'o', 'n']
>>> a[-1:]
['n']
>>> a[:-2]
['p', 'y', 't', 'h']

리스트는 가변형(mutable) 데이터로 값을 바꿀 수 있습니다.

>>> a=['p','y','t','h','o','n']
>>> a[0]='A'
>>> print(a)
['A', 'y', 't', 'h', 'o', 'n']
>>> a[1:3]=['B','C']
>>> print(a)
['A', 'B', 'C', 'h', 'o', 'n']  

리스트 메소드 List Method list

다음과 같은 메소드로 데이터를 조작할 수 있습니다.

  • append(): 원소 추가.
  • extend(): 원소 여러개 추가.
  • insert(): 원하는 위치에 원소 추가.
  • remove(): 원소 값을 인자로 입력해 헤당 원소 삭제. 리턴값 없음.
  • pop(): 원소 인덱스를 인자로 입력해 해당 원소 삭제. 해당 원소 값 리턴. 인자가 없으면 가장 마지막 원소가 삭제됨. 스택(stack) 구현에 유용.
  • clear(): 리스트를 비울 때 사용.
  • index(): 원소 값을 입력하면 앞에서부터 찾아 그 인덱스를 알려줌.
  • count(): 원소 개수를 알려줌.
  • sort(): 리스트를 오름차순으로 정렬해줌.
  • reverse(): 리스트 원소 값들의 순서를 거꾸로 바꾸어줌.
  • copy(): 리스트의 얕은 복사.

리스트 원소 추가 예제

  • append(): 원소 추가.
  • extend(): 원소 여러개 추가.
  • insert(): 원하는 위치에 원소 추가.
  • 빈 슬라이스(empty slice)에 리스트 끼워넣기.
    >>> a=['p','y','t','h','o','n']
    >>> a.append(' ')
    >>> a
    ['p', 'y', 't', 'h', 'o', 'n', ' ']
    >>> a.extend(['g','o','o','d'])
    >>> a
    ['p', 'y', 't', 'h', 'o', 'n', ' ', 'g', 'o', 'o', 'd']
    >>> a.insert(7,'i')
    >>> a
    ['p', 'y', 't', 'h', 'o', 'n', ' ', 'i', 'g', 'o', 'o', 'd']
    >>> a[8:8]=['s',' ']
    >>> a
    ['p', 'y', 't', 'h', 'o', 'n', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd']

리스트 원소 삭제 예제

  • del: 리스트의 원소나 리스트 자체를 삭제할 수 있는 키워드
  • remove(): 원소 값을 인자로 입력해 헤당 원소 삭제. 리턴값 없음.
  • pop(): 원소 인덱스를 인자로 입력해 해당 원소 삭제. 해당 원소 값 리턴. 인자가 없으면 가장 마지막 원소가 삭제됨. 스택(stack) 구현에 유용.
  • clear(): 리스트를 비울 때 사용.
  • 빈 리스트 (empty list)나 빈 슬라이스를 대입하여 원소를 삭제하기.
    >>> a=['p', 'y', 't', 'h', 'o', 'n', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd']
    >>> a.remove('o')
    >>> a
    ['p', 'y', 't', 'h', 'n', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd']
    >>> a.pop(4)
    'n'
    >>> a
    ['p', 'y', 't', 'h', ' ', 'i', 's', ' ', 'g', 'o', 'o', 'd']
    >>> a.pop()
    'd'
    >>> a[1:4]=[]
    >>> a
    ['p', ' ', 'i', 's', ' ', 'g', 'o', 'o']
    >>> a.clear()
    >>> a
    []

 

반응형