리스트를 만들 때에는 쉼표로 요소를 구분하고 대괄호로 감싸면 된다.
리스트명 = [요소1, 요소2, 요소3, ...]
리스트의 요소에는 어떠한 자료형이라도 포함할 수 있다.
>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]
리스트의 인덱싱은 C/C++, Java에서의 방식과 크게 다르지 않다. 다만, 파이썬에서는 뒤에서 부터 세는 -를 이용한 인덱싱이 가능하다. 또한 슬라이싱 역시 문자열에서와 동일하게 동작한다.
파이썬의 인덱싱과 슬라이싱이 갖는 강력한 점은 중첩 리스트에서 나타난다. 아래의 이중, 삼중 중첩 리스트를 보자.
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[-1][0]
'a'
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
C/C++이었다면 이차원, 삼차원 배열을 도입했어야 하겠지만, 파이썬에서는 매우 간결하고 직관적으로 중첩 리스트를 나타낼 수 있다. 또한 인덱싱 연산으로 값을 가져오는 과정도 매우 단순하다.
리스트 연산은 문자열 연산과 동일한 방식으로 이루어진다.
① 두 개의 리스트 병합
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
② 리스트 반복
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
③ 리스트 길이
>>> a = [1, 2, 3]
>>> len(a)
3
① 리스트의 값 수정하기
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
② 리스트의 값 삭제하기
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
>>> b = [1, 2, 3, 4, 5]
>>> del b[2:]
>>> b
[1, 2]
① append
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
② sort
>>> a = ['a', 'c', 'b']
>>> a.sort()
>>> a
['a', 'b', 'c']
③ reverse
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
④ insert
>>> a = [1, 2, 3]
>>> a.insert(1, 4)
>>> a
[1, 4, 2, 3]
⑤ remove
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]
⑥ pop
>>> a = [1, 2, 3]
>>> a.pop(1)
2
>>> a
[1, 3]
⑦ count
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2
튜플은 리스트와 매우 비슷하다. 리스트와 다른 점은 아래의 두 가지이다.
① ()로 둘러싼다.
t1 = ()
t2 = (1,)
t3 = (1, 2, 3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab', 'cd'))
② 요소 변경 불가
위에서 설명한 바와 같이 리스트에서의 연산과 동일한 방식이 튜플 연산에도 적용된다.
① 인덱싱
>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1
② 슬라이싱
>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')
③ 튜틀 병합
>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t3 = t1 + t2
>>> t3
(1, 2, 'a', 'b', 3, 4)
④ 튜플 반복
>>> t2 = (3, 4)
>>> t3 = t2 * 3
>>> t3
(3, 4, 3, 4, 3, 4)
⑤ 튜플 길이
>>> t1 = (1, 2, 'a', 'b')
>>> len(t1)
4