3.1.3 Lists
Python knows a number of compound data types, used to group together other values. The most versatile is the list, which can be written as a list of comma-separated values (items) between square brackets. Lists might contain items of different types, but usually the items all have the same type.
파이썬에서는 여러 유형의 복합 데이터 타입을 사용할 수 있습니다. 가장 다양한 값을 다룰 수 있는 데이터 타입은 리스트입니다. 리스트는 대괄호 사이에 콤마를 이용하여 다양한 값(item)을 기록합니다. 리스트는 다양한 타입의 값(item)을 포함할 수 있지만 대체로 동일한 유형의 값을 사용합니다.
>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
# squares 라는 변수에 대괄호 [ ] 를 이용하여 1,4,9,16,25 라는 여러 값을 저장하였다.
# squares 를 입력하면 파이썬은 [1,4,9,16,25]라고 대답한다.
>>> another_ex = [1, 'a', 3, 'example']
>>> another_ex
[1, 'a', 3, 'example']
# 리스트 안에는 숫자형과 문자열(작은 따옴표로 둘러싸인 값)이 함께 포함될 수 있다.
# 리스트는 다양한 형식의 값을 함께 담을 수 있다.
Like strings (and all other built-in sequence type), lists can be indexed and sliced:
문자열(그리고 다른 내장 시퀀스 타입)과 마찬가지로, 리스트 역시 인덱스를 매기고 부분적으로 잘라낼 수 있습니다.
>>> squares = [1, 4, 9, 16, 25]
# 이하 모든 예시에서 squares는 위에서 설정한 것과 같다.
>>> squares[0] # 인덱스에 해당하는 값을 보여준다.
1
>>> squares[-1]
25
>>> squares[-3:] # 슬라이싱이 새로운 리스트를 보여준다.
[9, 16, 25]
# squares = [x] 는 변수에 리스트를 설정해 주는 것
# squares[x] 는 x번 인덱스에 있는 리스트 안의 값을 불러오는 것
All slice operations return a new list containing the requested elements. This means that the following slice returns a new (shallow) copy of the list:
슬라이스를 명령하면 요구사항에 맞춰 언제나 새로운 리스트가 만들어진다. 이것은 아래 예시의 슬라이스가 기존 리스트의 새로운 복사본이라는 뜻이다.
>>> squares[:]
[1, 4, 9, 16, 25]
Lists also support operations like concatenation.
리스트는 연결도 가능하다.
>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Unlike strings, which are immutable, lists are a mutable type, i.e. it is possible to change their content:
문자열(strings)과 다르게 리스트는 그 내용을 바꿀 수 있다.
>>> cubes = [1, 8, 27, 65, 125]
# cube라는 변수에 리스트를 저장하고 싶다.
# cube : 육면체의 부피, 3제곱을 의미함
>>> 4 ** 3 # 4의 3제곱은 64이다. 65가 아니다.
64
>>> cubes[3] = 64 # 인덱스를 이용하여 리스트 안의 잘못된 값을 수정할 수 있다.
>>> cubes
[1, 8, 27, 64, 125]
# cubes[3] 이던 65가 64로 수정되었다.
You can also add new items at the end of the list, by using the append() method (we will see more about methods later):
우리는 리스트의 가장 끝에 새로운 값(item)을 추가할 수도 있다. 리스트에 새로운 값을 추가하기 위해서는 append()
라는 메서드(method)를 사용하면 된다. (앞으로 method 에 대해 더 알아보게 된다.)
>>> cubes.append(216) # cubes에 216을 추가하라는 명령이다. (216은 6의 세제곱)
>>> cubes.append(7 ** 3) # 다음과 같이 연산을 직접 append()에 집어넣을 수도 있다.
>>> cubes
[1, 8, 27, 64, 125, 216, 343]
# cubes 리스트에 216과 (7**3)이 추가되었다.
Assignment to slices is also possible, and this can even change the size of the list or clear it entirely:
슬라이스를 통해 리스트의 내용을 바꿀 수도 있다. 이 방법은 심지어 리스트의 크기를 바꾸거나 아예 없애버릴 수도 있다.
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
# 슬라이스를 이용해 리스트 내용 중 일부를 바꿔보자.
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
# 슬라이스를 이용해 리스트 내용 중 일부를 지워보자.
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
# 리스트 내용을 전부 지워버릴 수도 있다!
>>> letters[:] = []
>>> letters
[]
The built-in function len() also applies to lists:
파이썬에 기본적으로 저장되어 있는 내장함수(built-in function, BIF) 중 len()
도 리스트에 사용할 수 있다.
>>> letters = ['a', 'b', 'c', 'd']
>>> len(letters)
4
# 내장함수 len()은 리스트에 들어있는 값의 총 개수를 알려준다.
# 문자열에서는 글자의 총 개수를 알려준다.
It is possible to nest lists (create lists containing other lists), for example:
리스트 안에 리스트를 집어넣을 수도 있다.
>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'
# 인덱스를 연달아 두 개 사용하는 경우
# 앞쪽 인덱스는 상위리스트의 인덱스,
# 뒤쪽 인덱스는 하위리스트의 인덱스이다.
참고이미지)
위치가 이곳이 적절한지는 모르겠으나, 인덱스 예시를 첨부한다. 변수 [::-1]을 명령하면 리스트가 순서가 거꾸로 되어 출력된다.