목차
- 리스트란?
- 리스트의 인덱싱과 슬라이싱
- 리스트 연산자
- 리스트의 수정 (변경, 삭제)
- 리스트 관련 함수들
리스트(List)
1. 리스트란?
리스트를 이용하면 1, 3, 5, 7, 9와 같은 숫자 모음을 간단하게 표현할 수 있다.
>>> a = [] <---- 비어있는 리스트
>>> b = [1, 2, 3] <---- 숫자를 요소값으로 가진 리스트
>>> c = ['Life', 'is', 'too', 'short'] <---- 문자열을 요소값으로 가진 리스트
>>> d = [1, 2, 'Life', 'is'] <---- 숫자와 문자열을 함께 요소값으로 가진 리스트
>>> e = [1, 2, ['Life', 'is']] <---- 리스트 자체를 요소값으로 가진 리스트
위의 소스코드와 같이 여러 가지 리스트의 형태가 있다. 첫 번째 소스코드와 같이 비어있는 리스트도 생성할 수 있다.
2. 리스트의 인덱싱과 슬라이싱
2.1. 리스트 인덱싱(Indexing)
리스트 역시 문자열과 같이 인덱싱을 할 수 있다.
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[0] <---- 변수 a에 저장된 리스트 중 첫 번째에 위치한 요소값
1
>>> a[-1] <---- 변수 a에 저장된 리스트 중 마지막에 위치한 요소값
3
>>> a[0] + a[2] <---- 변수 a에 저장된 리스트 중 첫 번째와 세 번째에 위치한 요소값의 합
4
가장 아래에 위치한 소스코드와 같이 리스트의 각 요소의 값을 더할 수도 있다.
리스트 자체를 요소값으로 가진 리스트의 인덱싱 역시 가능하다.
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[-1]
['a', 'b', 'c']
>>> a[3]
['a', 'b', 'c']
a에 저장된 리스트 중 a[-1]는 마지막 요소 값, a[3]은 네 번째 요소 값을 나타내기 때문에 동일한 결과를 보여준다.
아래의 소스코드는 a에 저장된 ['a', 'b', 'c'] 리스트에 인덱싱하는 방법이다.
# 이중 리스트 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[-1][0]
'a'
>>> a[-1][2]
'c'
# 삼중 리스트 인덱싱
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
엄청 단순한 방법으로 리스트에 요소값으로 포함된 이중 또는 삼중 리스트 역시 인덱싱이 가능하다.
2.2. 리스트 슬라이싱(Slicing)
인덱싱과 같이 리스트역시 슬라이싱이 가능하다.
# 리스트의 슬라이싱
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
[1, 2]
# 문자열의 슬라이싱
>>> a = "12345"
>>> a[0:2]
'12'
위 소스코드를 보면 문자열에서 슬라이싱 했던 방법과 완전히 똑같은 것을 알 수 있다.
리스트의 슬라이싱을 몇가지 연습해본다.
# 기본 리스트의 슬라이싱
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2] <---- 리스트의 처음부터 a[1]까지
>>> c = a[2:] <---- 리스트의 a[2]부터 마지막까지
>>> b
[1, 2]
>>> c
[3, 4, 5]
# 중첩 리스트의 슬라이싱
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5] <---- 리스트의 a[2]부터 a[4]까지
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2] <---- 리스트의 a[3]에 위치한 ['a', 'b', 'c'] 중 첫 번째 부터 두 번째 요소까지
['a', 'b']
3. 리스트 연산자
문자열과 같이 리스트 역시 연산자를 사용해 더하거나 반복할 수 있다.
# 리스트 더하기 (+)
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b <---- 문자열에서와 같이 2개의 리스트를 합치는 기능
[1, 2, 3, 4, 5, 6]
# 리스트 반복 (*)
>>> a = [1, 2, 3]
>>> a * 3 <---- 문자열에서와 같이 [1, 2, 3]이라는 리스트를 세 번 반복하는 기능
[1, 2, 3, 1, 2, 3, 1, 2, 3]
4. 리스트의 수정 (변경, 삭제)
>>> a = [1, 2, 3]
# 리스트 [1, 2, 3]에서 하나의 값만 수정
>>> a[2] = 4 <---- [1, 2, 3] 중 세 번째 위치한 3을 4로 변경
>>> a
[1, 2, 4]
# 리스트에서 연속된 범위와 값 수정
>>> a[1:2] <---- 문자열 슬라이싱과 같이 a[1]만을 뜻함
[2]
>>> a[1:2] = ['a', 'b', 'c'] <---- 리스트 중 a[1]에 위치한 2를 ['a', 'b', 'c']라는 값을 대입
>>> a
[1, 'a', 'b', 'c', 4]
# []를 사용해 리스트 요소 삭제
>>> a[1:3] = [] <---- a[1]부터 a[2]까지를 의미하는 ['a', 'b']를 삭제
>>> a
[1, 'c', 4]
# del 함수를 사용해 리스트 요소 삭제
>>> a
[1, 'c', 4]
>>> del a[1] <---- a[1]인 'c'를 삭제
>>> a
[1, 4]
del은 파이썬이 자체적으로 가지고 있는 삭제 함수를 말한다.
참고로 리스트를 수정할 때 주의할 점이 있다. 아래의 소스코드로 테스트해본다.
# a[1:2]를 수정
>>> a = [1, 2, 3]
>>> a[1:2] = ['a', 'b', 'c']
>>> a
[1, 'a', 'b', 'c', 3]
# a[1]를 수정
>>> a = [1, 2, 3]
>>> a[1] = ['a', 'b', 'c']
>>> a
[1, ['a', 'b', 'c'], 3]
a[1:2] = ['a', 'b', 'c']는 a[1]에서 a[2]사이의 리스트를 ['a', 'b', 'c']로 바꾼다는 뜻이고,
a[1] = ['a', 'b', 'c']는 a의 두 번째 요소를 ['a', 'b', 'c']로 바꾼다는 뜻이다. 위 소스코드를 확인하면 무슨 말인지 이해할 수 있다.
5. 리스트 관련 함수들
문자열에서 함수를 사용했던 방법과 같이 변수 뒤에 마침표 '.'를 붙여서 리스트와 관련된 여러 함수들을 사용할 수 있다.
# 리스트에 요소 추가 (append)
>>> a = [1, 2, 3]
>>> a.append(4) <---- 리스트의 마지막에 4를 추가
>>> a
[1, 2, 3, 4]
>>> a.append([5, 6]) <---- 리스트의 마지막에 [5, 6]을 추가 (리스트 자체 추가 가능)
>>> a
[1, 2, 3, 4, [5, 6]]
# 리스트 정렬 (sort)
>>> a = [1, 4, 3, 2]
>>> a.sort() <---- 리스트의 요소를 순서대로 정렬
>>> a
[1, 2, 3, 4]
>>> a = ['a', 'c', 'b']
>>> a.sort() <---- 알파벳으로 구성된 리스트 역시 순서대로 정렬 가능
>>> a
['a', 'b', 'c']
# 리스트 뒤집기 (reverse)
>>> a = ['a', 'c', 'b']
>>> a.reverse() <---- 리스트를 역순으로 뒤집어 준다. (순서 상관없이 현재의 리스트를 그대로 뒤집는다.)
>>> a
['b', 'c', 'a']
# 위치 반환 (index)
>>> a = [1, 2, 3]
>>> a.index(3) <---- 리스트에서 3의 위치 반환
2 <---- a[2]에 위치하고 있기 때문에 2를 반환
>>> a.index(1) <---- 리스트에서 1의 위치 반환
0 <---- a[0]에 위치하고 있기 때문에 0을 반환
>>> a.index(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 0 is not in list <---- 리스트에 0이 존재하지 않기 때문에 오류 발생
# 리스트에 요소 추가 (insert)
# insert(a, b): a 번째 위치에 b를 추가하는 함수
>>> a = [1, 2, 3]
>>> a.insert(0, 4) <---- a[0] 위치에 4 추가
>>> a
[4, 1, 2, 3]
>>> a.insert(3, 5) <---- a[3] 위치에 5 추가
>>> a
[4, 1, 2, 5, 3]
# 리스트 요소 삭제 (remove)
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3) <---- 리스트에서 첫 번째로 나오는 3을 삭제
>>> a
[1, 2, 1, 2, 3]
# 리스트 요소 꺼내기 (pop)
>>> a = [1, 2, 3]
>>> a.pop() <---- 리스트 맨 마지막의 요소를 돌려주고 해당 요소 삭제
3 <---- 리스트 마지막에 위치한 3을 보여주고 삭제
>>> a
[1, 2]
>>> a = [1, 2, 3]
>>> a.pop(1) <---- 리스트의 a[1]에 위치한 요소를 돌려주고 해당 요소 삭제
2 <---- 리스트에서 a[1]에 위치한 2를 보여주고 삭제
>>> a
[1, 3]
# 리스트에 포함된 요소 X의 개수 파악 (count)
>>> a = [1, 2, 3, 1]
>>> a.count(1) <---- 리스트 a에 1의 개수 파악
2
# 리스트 확장 (extend)
# extend(x)에서 x에는 리스트만 올 수 있다.
>>> a = [1, 2, 3]
>>> a.extend([4, 5]) <---- 리스트 a에 리스트 [4, 5]추가 (a.extend([4, 5])는 a += [4, 5]와 동일
>>> a
[1, 2, 3, 4, 5]
>>> b = [6, 7]
>>> a.extend(b) <---- 리스트 a에 리스트 b추가
>>> a
[1, 2, 3, 4, 5, 6, 7]
내용 출처: 책 '점프 투 파이썬'의 내용
'Programing > Python' 카테고리의 다른 글
[Python 입문] 3. 파이썬 자료형 - 문자열 02 (0) | 2021.12.15 |
---|---|
[Python 입문] 3. 파이썬 자료형 - 문자열 01 (0) | 2021.12.10 |
[Python 입문] 2. 파이썬 자료형 - 숫자 (0) | 2021.12.10 |
파이썬(Python)을 위한 파이참(PyCharm)와 아나콘다(Anaconda) (1) | 2021.12.10 |
[Python 입문] 1. 파이썬(Python)이란? (0) | 2021.12.08 |