PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-3 리스트 자료형
PYTHON/CONCEPT 2017. 12. 30. 19:05 |PYTHON.
02. 파이썬의 프로그래밍의 기초, 자료형.
02-3 리스트 자료형PYTHON. 02
* 리스트는 어떻게 만들고 사용할까?
리스트의 인덱싱과 슬라이싱
리스트의 인덱싱
>>> a = [1, 2, 3] >>> a [1, 2, 3]
>>> a[0] 1
>>> a[0] + a[2] 4
>>> a[-1] 3
>>> a[-2]
2
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0] 1 >>> a[-1] ['a', 'b', 'c'] >>> a[3] ['a', 'b', 'c']
>>> a[-1][0] 'a'
>>> a[-1][1] 'b' >>> a[-1][2] 'c'
[삼중 리스트에서 인덱싱하기]
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
리스트의 슬라이싱
>>> 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] >>> c = a[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', 'b']
위의 예에서 a[3]은 ['a', 'b', 'c']를 나타낸다. 따라서 a[3][:2]는 ['a', 'b', 'c']의 첫 번째 요소부터 세 번째 요소 직전까지의 값, 즉 ['a', 'b']를 나타내는 리스트가 된다.
리스트 연산자
1) 리스트 더하기(+)
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a + b [1, 2, 3, 4, 5, 6]
2) 리스트 반복하기(*
)
[초보자가 범하기 쉬운 리스트 연산 오류]
다음과 같은 소스 코드를 입력했을 때 결과값은 어떻게 나올까?
>>>a = [1, 2, 3]
>>>a[2] + "hi"
a[2]의 값인 3과 문자열 hi가 더해져서 3hi가 출력될 것이라고 생각할 수 있다. 하지만 다음의 결과를 보자. 형 오류(TypeError)가 발생했다. 오류의 원인은 무엇일까?
Traceback (innermost last):
File "", line 1, in ?
a[2] + "hi"
TypeError: number coercion failed
a[2]에 저장된 값은 3이라는 정수인데 "hi"는 문자열이다. 정수와 문자열은 당연히 서로 더할 수 없기 때문에 형 오류가 발생한 것이다.
만약 숫자와 문자열을 더해서 '3hi'처럼 만들고 싶다면 숫자 3을 문자 '3'으로 바꾸어 주어야 한다. 다음과 같이 할 수 있다.
>>>str(a[2]) + "hi"
str()은 정수나 실수를 문자열의 형태로 바꾸어 주는 파이썬의 내장 함수이다.
리스트의 수정, 변경과 삭제
1. 리스트에서 하나의 값 수정하기
2. 리스트에서 연속된 범위의 값 수정하기
[리스트 수정할 때 주의할 점]
2번 예제에서 리스트를 a[1:2] = ['a', 'b', 'c']로 수정하는 것과 a[1] = ['a', 'b', 'c']로 수정하는 것은 전혀 다른 결과값을 갖게 되므로 주의해야 한다. a[1] = ['a', 'b', 'c']는 리스트 a의 두 번째 요소를 ['a', 'b','c']로 바꾼다는 말이고 a[1:2]는 a[1]에서 a[2] 사이의 리스트를 ['a', 'b', 'c']로 바꾼다는 말이다. 따라서 a[1] = ['a', 'b', 'c']로 수정하게 되면 위와는 달리 리스트 a가 [1, ['a', 'b', 'c'], 4]라는 값으로 변하게 된다.
>>> a[1] = ['a', 'b', 'c']
>>> a
[1, ['a', 'b', 'c'], 4]
3. [ ] 사용해 리스트 요소 삭제하기
>>> a[1:3] = [ ] >>> a [1, 'c', 4]
4. del 함수 사용해 리스트 요소 삭제하기
* 리스트 관련 함수들
- 리스트에 요소 추가(append)
- 리스트 정렬(sort)
- 리스트 뒤집기(reverse)
- 위치 반환(index)
- 리스트에 요소 삽입(insert)
- 리스트 요소 제거(remove)
// remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.
>>> a = [1, 2, 3, 1, 2, 3] >>> a.remove(3) [1, 2, 1, 2, 3]
>>> a.remove(3) [1, 2, 1, 2]
- 리스트 요소 끄집어내기(pop)
>>> a = [1,2,3] >>> a.pop() 3 >>> a [1, 2]
// pop(x)는 리스트의 x번째 요소를 돌려 주고 그 요소는 삭제한다.
>>> a = [1,2,3] >>> a.pop(1) 2 >>> a [1, 3]
- 리스트에 포함된 요소 x의 개수 세기(count)
- 리스트 확장(extend)
extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.
>>> a = [1,2,3] >>> a.extend([4,5]) >>> a [1, 2, 3, 4, 5] >>> b = [6, 7] >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6, 7]
리스트의 요소를 제거하는 3가지 방법
지금까지 알아본 리스트의 요소를 제거하는 방법은 총 3가지이다.
- 리스트의 remove 함수 이용하기
- 리스트의 pop 함수 이용하기
- del을 이용하기
이 3가지 방법은 결과적으로 리스트의 요소가 삭제된다는 점에서는 동일하지만 삭제에 사용되는 입력값에는 큰 차이점이 있다. 예제로 알아보자.
>>> a = [1, 2, 3, 'a', 'b', 'c']
>>> a.remove('a')
>>> a
[1, 2, 3, 'b', 'c']
1. a.remove('a')는 a 리스트의 'a'라는 요소값을 삭제한다. 즉, a.remove(x)의 x에는 인덱스가 아닌 요소값 만을 사용할 수 있다. 참고로 다음과 같이 리스트의 요소를 인덱스로 삭제하려고 하면 다음과 같은 오류가 발생한다.
>>> a.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
2. pop은 remove와 반대로 요소값으로 삭제할 수는 없고 인덱스로만 삭제가 가능하다. 즉, a.pop(x)의 x에는 a리스트의 인덱스만 가능하다. 다음의 예제로 확인해 보자.
>>> a = [1, 2, 3, 'a', 'b', 'c']
>>> a.pop(4)
'b'
>>> a
[1, 2, 3, 'a', 'c']
a.pop(4)는 a리스트의 5번째 요소를 삭제한다. 단, pop함수는 삭제된 요소를 리턴받는 특징이 있다.
만약 pop 함수 사용시 인덱스가 아닌 요소값을 이용한다면 다음과 같은 오류를 만나게 될 것이다.
>>> a.pop('b')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer
3. del은 리스트의 요소를 삭제하는 함수이므로 당연히 인덱스만 가능하다.
>>> a = [1, 2, 3, 'a', 'b', 'c']
>>> del a[4]
>>> a
[1, 2, 3, 'a', 'c']
del a[4] 는 a리스트의 5번째 요소를 삭제한다는 것을 알 수 있다.
즉, 결론은 다음과 같다.
- a.remove(x) - x는 a리스트의 요소값
- a.pop(x) - x는 a리스트의 인덱스
- del a[x] - x는 a리스트의 인덱스
'PYTHON > CONCEPT' 카테고리의 다른 글
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-5 딕셔너리 자료형 (0) | 2018.01.02 |
---|---|
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-4 튜플 자료형 (0) | 2018.01.02 |
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-2 문자열 자료형(2) (0) | 2017.12.30 |
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-2 문자열 자료형(1) (0) | 2017.12.30 |
PYTHON. 02. 파이썬의 프로그래밍의 기초, 자료형. 02-1 숫자형 (0) | 2017.12.30 |