Python 기본 - 4. 리스트 자료형 다루기

리스트 (list)란 특정 값들을 순서 있게 저장하는 자료형이다.

C와는 달리, 하나의 리스트 안에 숫자와 문자가 공존할 수 있더라.

앞서 배운 문자열처럼 리스트 또한 인덱싱과 슬라이싱을 할 수 있다.

하지만, 각각의 결과물에 대해 조심해야 할 필요가 있다.

1
2
3
4
5
6
7
8
9
>>> lst = ["Python",2,3,4,5]
>>> print(lst[0]) #lst의 첫번째 원소를 출력
Python
>>> print(lst[1]) #lst의 두번째 원소를 출력
2
>>> print(lst[1:]) #lst를 두번째 부터 끝까지 슬라이싱
[2, 3, 4, 5]
>>> print(lst[0][0]) #lst의 첫번째 원소 안의 첫번째 원소
P

위의 결과를 보면 특이한 점이 한 가지 보인다.

바로, 리스트를 인덱싱 한 결과값은 그 자리의 원소 (숫자)인 반면

리스트를 슬라이싱 한 결과값은 리스트로 반환되는 것이다!

리스트의 값을 수정하거나 삭제하고 싶은 경우가 있다.

문자열의 요소값을 바꿀수 없는 것과는 달리, 리스트의 값은 쉽게 바꿀 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
>>> a=[1,2,3,4,5]
>>> print(a)
[1, 2, 3, 4, 5]
>>> a[0] = 100
>>> a[4] = "Python"

>>> print(a)
[100, 2, 3, 4, Python]

>>> del a[0] #a의 첫번째 원소 삭제
>>> print(a)
[2, 3, 4, Python]

위의 예시를 보면 알겠지만, 리스트의 요소값을 삭제하고 싶은 경우 del 함수를 사용하여 정확히 인덱싱 한 부분을 삭제할 수 있다.

리스트 또한 문자열과 마찬가지로 변수명 뒤에 ‘.’을 붙여서 관련 함수들을 사용할 수 있다. 자주 쓰이는 함수 몇 가지만 알아보자.

요소 추가하기 (append)

.append(x)는 리스트의 맨 마지막에 x를 추가시키는 함수이다.

1
2
3
4
>>> fruits = ['apple', 'banana', 'cherry']
>>> fruits.append("orange")
>>> print(fruits)
['apple', 'banana', 'cherry', 'orange']

append()를 사용할 경우 원본 data가 변형된다는 점에 주의해야 한다.

리스트 정렬하기 (sort)

.sort()는 리스트의 요소를 순서대로 정렬해 주는 함수이다.

1
2
3
4
5
6
7
8
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> print(a)
[1, 2, 3, 4]

>>> a.sort(reverse=True)
>>> print(a)
[4, 3, 2, 1]

문자가 요소인 리스트의 경우, 기본적으로 제일 첫 글자의 순서대로 정렬해 준다. key값을 지정해 줌으로써 정렬 기준을 바꿀 수 있다.

1
2
3
4
5
6
7
8
# A function that returns the length of the value:
>>> def myFunc(e):
return len(e)

>>> cars = ['Ford', 'Mitsubishi', 'BMW', 'VW']
>>> cars.sort(key=myFunc)
>>> print(cars)
['VW', 'BMW', 'Ford', 'Mitsubishi']

리스트 순서 뒤집기 (reverse)

.reverse()는 리스트를 역순으로 뒤집는 함수이다.

1
2
3
4
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> print(a)
['b', 'c', 'a']

요소 끄집어내기 (pop)

.pop(x)은 리스트의 x번째 요소를 반환하고 해당 요소는 리스트에서 삭제하는 함수이다.

주로 index로 요소를 찾고, 그 값을 반환하고 리스트에서 삭제를 원할 경우 사용한다.

index로 요소를 찾고 단순히 제거를 원할 경우 del을 사용하고,
index가 아닌 그 값으로 요소를 찾고 제거를 원할 경우 remove()를 사용한다.

후자의 경우 입력한 값이 리스트에 없는 경우 ValueError가 발생한다.

1
2
3
4
5
6
7
8
9
10
>>> fruits = ['apple', 'banana', 'cherry']
>>> fruits.pop(1)
>>> print(fruits)
['apple', 'cherry']

>>> a = [1,2,3]
>>> print(a.pop()) #index을 지정하지 않은 경우
3 #리스트의 맨 마지막 요소를 반환
>>> print(a)
[1, 2]

위에서 소개하지 않은 나머지 리스트와 관련된 함수들은 여기를 참고하면 된다.

특히 .append().pop() 은 자주 쓰이는 함수이다.

예를 들어 data stream을 append()를 이용해서 차례대로 받고, pop()을 통해서 제일 뒤부터 차례대로 뽑아서 처리하는 식으로 종종 사용한다.