컬렉션: List

1. 리스트 (List)

리스트는 여러 요소들을 갖는 집합(컬렉션)으로 새로운 요소를 추가하거나 갱신, 삭제하는 일이 가능하다. 파이썬의 리스트는 동적배열(Dynamic Array)로서 자유롭게 확장할 수 있는 구조를 갖는다. 리스트는 그 안의 요소(element)들은 그 값을 자유롭게 변경할 수 있는 Mutable 데이타 타입이다.

리스트의 요소들은 Square bracket([ ])으로 둘러쌓여 컬렉션을 표현하는데, 각 요소들은 서로 다른 타입이 될 수 있으며, 컴마(,)로 구분한다. 요소가 없는 빈 리스트는 "[]"와 같이 표현한다.

a = []     # 빈 리스트
a = ["AB", 10, False]

2. 리스트 인덱싱(Indexing)

리스트의 특정 한 요소만을 선택하기 위하여 인덱싱(Indexing)을 사용하는데, 첫번째요소는 "리스트[0]", 두번째 요소는 "리스트[1]" 처럼 표현한다. 즉, 아래 예제에서 처럼 리스트 a 가 있을 때, a[1] 는 두번째 요소 10을 가리킨다. 파이썬 인덱싱에서 한가지 특별한 표현은 인덱스에 -1, -2 같은 음수를 사용할 수 있다는 점이다. 이 때, -1은 현재 리스트의 마지막 요소를, -2는 뒤에서 두번째 요소를 가리킨다.

a = ["AB", 10, False]
x = a[1]        # a의 두번째 요소 읽기
a[1] = "Test"   # a의 두번째 요소 변경
y = a[-1]       # False

3. 리스트 슬라이싱(Slicing)

리스트에서 일부 부분 요소들을 선택하기 위하여 슬라이스(Slice)를 사용한다. 슬라이스는 "리스트[처음인덱스:마지막인덱스]"와 같이 인덱스 표현에서 부분집합의 범위를 지정하는 것이다. 인덱스는 0 부터 시작하며, 마지막 인덱스를 원하는 "마지막 요소의 인덱스 + 1"을 의미한다. 만약 처음인덱스가 생략되면, 0 부터 시작되며, 마지막 인덱스가 생략되면, 리스트의 끝까지 포함됨을 의미한다.

a = [1, 3, 5, 7, 10]
x = a[1:3]     # [3, 5]
x = a[:2]      # [1, 3]
x = a[3:]      # [7, 10]
x = a[:]       # 전체

슬라이스에서 "리스트[처음인덱스:마지막인덱스:스텝]"과 같이 3번째에 Step을 둘 수 있다. 예를 들어, Step=2를 설정하면, 한 칸씩 건너 뛰면서 요소를 찾게 된다.

a = [1, 2, 3, 4, 5]
x = a[::2]     # [1, 3, 5]

슬라이스를 이용하여 리스트를 역순으로(Reverse) 정렬하기 위해서는 아래와 같이 Step을 -1 로 지정하면 된다.

a = [1, 2, 3, 4, 5]
x = a[::-1]     # [5, 4, 3, 2, 1]

4. 리스트 요소 추가,수정,삭제

리스트에 새로운 요소를 추가하기 위해서는 "리스트.append()"를 사용한다. 리스트 요소를 갱신하기 위해서는 리스트 인덱싱을 사용하여 특정요소에 새 값을 넣는다. 리스트 요소를 삭제하기 위해서는 "del 요소"와 같이 특정 요소를 지운다.

a = ["AB", 10, False]
a.append(21.5)  # 추가
a[1] = 11       # 변경
del a[2]        # 삭제
print(a)        # ['AB', 11, 21.5]

5. 리스트 병합과 반복

두 개의 리스트를 병합하기 위해서는 플러스(+)를 사용한다. 이 때 두 리스트는 순서대로 병합된 새로운 하나의 리스트가 된다. 하나의 리스트를 N 번 반복하기 위해서는 "리스트 * N"와 같이 표현할 수 있다. 이는 동일한 리스트를 계속 반복한 새 리스트를 만들게 된다.

# 병합
a = [1, 2]
b = [3, 4, 5]
c = a + b
print(c)   # [1, 2, 3, 4, 5]

# 반복
d = a * 3
print(d)   # [1, 2, 1, 2, 1, 2]

6. 리스트 검색

리스트 안에 특정 요소를 검색하기 위해서 index() 메서드를 사용한다. 또한 특정 요소가 몇 개 있는지 체크하기 위해서 count() 메서드를 사용할 수 있다.

mylist = "This is a book That is a pencil".split()
i = mylist.index('book')  # i = 3
n = mylist.count('is')    # n = 2
print(i, n)

7. List Comprehension

리스트의 [...] 괄호 안에 for 루프를 사용하여 반복적으로 표현식(expression)을 실행해서 리스트 요소들을 정의하는 특별한 용법이 있는데, 이를 List Comprehension 이라 부른다. 이는 아래와 같은 문법으로 컬렉션으로부터 요소를 하나씩 가져와 표현식을 실행하여 그 결과를 리스트에 담는 방식이다. 여기서 if 조건식은 옵션으로 추가될 수 있는데 for 루프에서 이 조건식에 맞는 요소만 표현식을 실행하게 된다.

[표현식 for 요소 in 컬렉션 [if 조건식]]

아래 예제는 0부터 9까지 숫자들중 3으로 나눈 나머지가 0인 숫자에 대해 그 제곱에 대한 리스트를 구한 예이다.

list = [n ** 2 for n in range(10) if n % 3 == 0]

print(list)
# 출력: [0, 9, 36, 81]
Python 프로그래밍 실습

본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.