[파이썬 튜토리얼] list 타입

PlanB·2022년 10월 9일
1

파이썬 튜토리얼

목록 보기
16/21

Level 1

기본적인 타입 개념과 산술 연산자를 배웠으니, 파이썬으로 할 수 있는 것이 조금 많아졌다. 이제 기본적인 산수 계산 정도는 할 수 있게 되었다. 그러나 아직 우리가 알고 있는 개념 내에서는 한계가 많은데, 타입의 범위에서 지금 풀어볼 수 있는 것은 많은 개수의 값을 다루기 어렵다는 것이다.

학생들의 키 평균을 파이썬으로 계산하기로 했다고 쳐보자. 먼저, 키 정보를 변수에 저장해야 한다. 만약 3명의 학생을 대상으로 한다면, 다음처럼 3개의 변수가 만들어져야 한다.

tall_of_number_1 = 176.5
tall_of_number_2 = 180.3
tall_of_number_3 = 162.2

당장은 다뤄야 할 값의 개수가 적어서 이 정도로 끝났지만, 만약 학생 수가 30명, 300명처럼 많아진다면 변수의 개수도 그만큼 많아져야 한다. 이런 문제를 해결하기 위해, 다음처럼 변수 하나에 값을 여러 개 묶는 방법을 사용할 수 있다.

students_height = [176.5, 180.3, 162.2]

파이썬에는 이처럼 여러 개의 값을 덩어리로 묶어 다루기 위한 타입이 존재한다. 여기에 속하는 타입은 list, tuple, dict, set으로 총 4가지가 있다. 각자 장단점이 있기 때문에 용도에 따라 사용하면 되고, 이것은 차차 설명하도록 하겠다.

공식적인 어휘는 아니지만, 이 타입들은 값을 여러 개씩 포함할 수 있으므로 컨테이너(Container)라고 부른다. 특정한 요구사항을 만족하고 있으므로 Iterable이라고 부르기도 하는데, 아직은 여기에 대해 이해하기 어려우므로 컨테이너라는 어휘를 사용하도록 하겠다. 이번 단원에서 알아볼 것은, list다.

list

list는 목록이라는 의미에 맞게 동작한다. 뒤에서 배울 dict와 함께 파이썬에서 자주 등장하는 컨테이너 타입 중 하나다.

a = [1, 2, 3, 4, 5]

print(a)

결과

[1, 2, 3, 4, 5]

콤마(,)로 구분해 나열된 요소를 대괄호로 감싸 list를 만들 수 있다. 요소가 하나도 없는 빈 list나, list 내에 있는 요소들끼리 타입이 서로 달라도 괜찮다. list의 요소로 list가 사용될 수도 있다. 다음은 그 예다.

l1 = []
l2 = [1, 2, [3.5, 0], 'hi']

print(l1)
print(l2)

결과

[]
[1, 2, [3.5, 0], 'hi']

조언

  • 여러 개의 값을 나누어 변수에 하나씩 담아두는 대신, list를 사용하면 간편할 수 있다는 것만 이해하고 넘어가자. 어차피 뒤 단원에서 list가 자주 등장할테니 천천히 익숙해지면 된다.

자투리 지식

  • list의 각 요소들을 지칭하는 이름으로 보통 element, item라는 단어를 사용한다.

Level 2

list 응용하기

계속 타입만 배우느라 따분하니, 내용을 조금 건너뛰어 보자. list 들어 있는 모든 값을 더한다거나, 평균을 낸다거나 하는 일을 해볼 것이다. 그래도 이번 단원에서 얘기한 값 30개 평균 내기정도는 미리 알아보면 재밌을 것이다.

list로 할 수 있는 일들을 조금 소개할텐데데, 원리에 대해서는 뒤 단원들을 통해 천천히 이해하도록 하자. 여기서는 방법 자체만 알아보는 것이 목표다. 뒤에 나올 예제들을 지금 이해하기 어려운 것은 당연하므로, 주눅들지 말자.

list에 들어 있는 모든 값 더하기

대표적으로 두 가지 방법이 있다. 일부러 더 어려운 방법을 뒤에 뒀다.

l = [76.5, 80.3, 75.1]

print(sum(l))

결과

231.9
l = [76.5, 80.3, 75.1]

result = 0

for item in l:
    result += item

print(result)

결과

231.9

리스트에 들어 있는 값의 평균 내기

n개 요소에 대해 평균을 내려면, 요소를 모두 더한 뒤 n으로 나누면 된다. 요소를 모두 더하는 것은 앞에서 sum을 소개했으므로, 여기서는 리스트에 들어 있는 요소의 개수를 구해주는 len이 주인공이다.

l = [76.5, 80.3, 75.1]

print(sum(l) / len(l))

결과

77.3

비명시적 행간 결합

첫 단원에서 비명시적 행간 결합을 설명했다. 괄호를 열었을 경우, 괄호를 닫을 때까지의 행이 모두 결합된다는 내용이었다. 이것은 list에 대해서도 통하는 개념이다.

l = [
    1,
    2, 3,
    4, 5
]

print(l)

결과

[1, 2, 3, 4, 5]
profile
백엔드를 주로 다룹니다. 최고가 될 수 없는 주제로는 글을 쓰지 않습니다.

0개의 댓글