[ 리스트 자료형 ]
>>> odd = [1, 3, 5, 7 ,9]
리스트를 만들때는 마치 배열처럼 대괄호로 감싼뒤 쉼표로 구분해주면 된다.
리스트는 비어있거나, 숫자를 요소값으로 가지거나, 문자열을 요소로 가지거나 함께 가지거나 리스트 자체를 요소값으로도 가질 수 있다.
(※ 비어있는 리스트는 a = list()로도 생성 가능하다.)
리스트의 인덱싱과 슬라이싱
1) 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[0] + a[2]
4
>>> a[-1]
['a', 'b', 'c']
>>> a[-1][0]
'a'
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
문자열에서 배웠던것과 같이 사용하면 된다.
2) 슬라이싱
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
[1, 2]
중첩된 리스트에서도 문자열 슬라이싱 처럼 할 수 있다.(a[3][:2])
리스트 연산자
1) 리스트 더하기(+)
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a = [1, 2, 3]
>>> a[2] + "hi"
Traceback (innermost last):
File "", line 1, in ?
a[2] + "hi"
TypeError: number coercion failed
a[2]에 저장된 값은 3이라는 정수인데 "hi"는 문자열이다. 정수와 문자열은 당연히 서로 더할 수 없기 때문에 형 오류가 발생한 것이다.
만약 숫자와 문자열을 더해서 '3hi'처럼 만들고 싶다면 숫자 3을 문자 '3'으로 바꾸어 주어야 한다. 다음과 같이 할 수 있다.
str()은 정수나 실수를 문자열의 형태로 바꾸어 주는 파이썬의 내장 함수이다.
2) 리스트 반복하기(*)
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
리스트의 수정, 변경과 삭제
1. 리스트에서 하나의 값 수정하기
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
2. 리스트에서 연속된 범위의 값 수정하기
>>> a = [1, 2, 3]
>>> a[1:2]
[2]
>>> a[1:2] = ['a', 'b', 'c']
>>> a
[1, 'a', 'b', 'c', 4]
리스트를 a[1:2] = ['a', 'b', 'c']로 수정하는 것과 a[1] = ['a', 'b', 'c']로 수정하는 것은 전혀 다른 결과값을 갖게 되므로 주의해야 한다.
>>> a[1] = ['a', 'b', 'c']
>>> a
[1, ['a', 'b', 'c'], 4]
a[1] = ['a', 'b', 'c']는 리스트 a의 두 번째 요소를 ['a', 'b','c']로 바꾼다는 말이고
a[1:2] = ['a', 'b', 'c']는 a[1]에서 a[2] 사이의 리스트를 ['a', 'b', 'c']로 바꾼다는 말이다.
따라서 a[1] = ['a', 'b', 'c']로 수정하게 되면 위와는 달리 리스트 a가 [1, ['a', 'b', 'c'], 4]라는 값으로 변하게 된다.
3. [ ] 사용해 리스트 요소 삭제하기
>>> a[1:3] = [ ]
>>> a
[1, 'c', 4]
del 함수 사용해 리스트 요소 삭제하기
>>> a
[1, 'c', 4]
>>> del a[1]
>>> a
[1, 4]
리스트에 요소 추가(append)
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
append(x)는 리스트의 맨 마지막에 x를 추가시키는 함수이다. 어떤 자료형도 추가가능하여 리스트도 추가할 수 있다.
리스트 정렬(sort)
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]
문자 역시 알파벳 순서로 정렬할 수 있다.
리스트 뒤집기(reverse)
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
역순으로 정렬하는 것이 아닌 현재 리스트를 그대로 거꾸로 뒤집는 것이다.
위치 반환(index)
>>> a = [1,2,3]
>>> a.index(3)
2
>>> a.index(1)
0
>>> a.index(0)
Traceback (innermost last):
File "", line 1, in ?
a.index(0)
ValueError: list.index(x): x not in list
index(x)는 리스트에 x라는 값이 있으면 x의 위치값을 리턴한다. x값이 없으면 ValueError(값 오류)가 발생한다.
리스트에 요소 삽입(insert)
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
[4, 1, 2, 3]
>>> a.insert(3, 5)
[4, 1, 2, 5, 3]
insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수이다.
리스트 요소 제거(remove)
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
[1, 2, 1, 2, 3]
remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다. 위 상태에서 한번 더 실행하면 이번엔 뒤에 남은 3이 삭제될것이다.
리스트 요소 끄집어내기(pop)
>>> a = [1,2,3,3]
>>> a.pop()
3
>>> a
[1, 2,3]
>>> a.pop(1)
2
>>> a
[1, 3]
pop()은 리스트의 맨 마지막 요소를 돌려 주고 그 요소는 삭제하는 함수이다.
pop(x)는 리스트의 x번째 요소를 돌려 주고 그 요소는 삭제한다.
리스트에 포함된 요소 x의 개수 세기(count)
>>> a = [1,2,3,1]
>>> a.count(1)
2
count(x)는 리스트 내에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다
리스트 확장(extend)
>>> 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]
extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.
[ 튜플 자료형 ]
튜플은 상수 리스트라고 생각하면 된다. 그렇기에 리스트와 상당히 유사하지만 상수의 성질처럼 요소 값을 변경할 수 없고, 또 지울수도 없다. 표현하는 방법은 (, ) 로 둘러싸는 것이다.
- 표현방법 -
>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1, 2, 3)
>>> t4 = 1, 2, 3
>>> t5 = ('a', 'b', ('ab', 'cd'))
리스트와 유사하지만 t2 처럼 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야하고, t4처럼 괄호를 생략해도 무방하다는 점이 있다.
튜플의 인덱싱과 슬라이싱, 더하기(+)와 곱하기(*)
1. 인덱싱하기
>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1
>>> t1[3]
'b'
2. 슬라이싱하기
>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')
3. 튜플 더하기
>>> t2 = (3, 4)
>>> t1 + t2
(1, 2, 'a', 'b', 3, 4)
4. 튜플 곱하기
>>> t2 * 3
(3, 4, 3, 4, 3, 4)
https://wikidocs.net/
도서 - 점프 투 파이썬/박응용