11.2 시퀀스 객체의 요소 개수 구하기

시퀀스 객체에는 요소가 여러 개 들어있죠? 이 요소의 개수(길이)를 구할 때는 len 함수를 사용합니다(len은 길이를 뜻하는 length에서 따왔습니다).

  • len(시퀀스객체)

11.2.1  리스트와 튜플의 요소 개수 구하기

먼저 리스트의 요소 개수부터 구해보겠습니다. 리스트 a에는 요소가 10개 들어있으므로 len(a)는 10이 나옵니다.

>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> len(a)
10
그림 11-6 리스트의 요소 개수 구하기

다음 튜플 b에는 요소가 5개 들어있으므로 len(b)는 5가 나옵니다.

>>> b = (38, 76, 43, 62, 19)
>>> len(b)
5
그림 11-7 튜플의 요소 개수 구하기

11.2.2  range의 숫자 생성 개수 구하기

rangelen 함수를 사용하면 숫자가 생성되는 개수를 구합니다.

>>> len(range(0, 10, 2))
5

range(0, 10, 2)는 0부터 10까지 2씩 증가하므로 0, 2, 4, 6, 8입니다. 따라서 5가 나옵니다.

그림 11-8 range의 숫자 생성 개수 구하기

지금까지 리스트(튜플)의 값을 직접 타이핑해서 요소의 개수를 알기 쉬웠습니다. 하지만 실무에서는 range 등을 사용하여 리스트(튜플)를 생성하거나, 다양한 방법으로 요소를 추가, 삭제, 반복하므로 요소의 개수가 한눈에 보이지 않습니다. 그래서 요소의 개수를 구하는 len 함수를 자주 활용하게 됩니다.

11.2.3  문자열의 길이 구하기

이번에는 문자열의 길이(문자의 개수)를 구해보겠습니다. 문자열도 시퀀스 자료형이므로 len 함수를 사용하면 됩니다.

>>> hello = 'Hello, world!'
>>> len(hello)
13

len으로 'Hello, world!' 문자열이 들어있는 hello의 길이를 구해보면 13이 나옵니다.

그림 11-9 문자열의 길이 구하기

여기서 문자열의 길이는 공백까지 포함합니다. 단, 문자열을 묶은 따옴표는 제외합니다. 이 따옴표는 문자열을 표현하는 문법일 뿐 문자열 길이에는 포함되지 않습니다(문자열 안에 포함된 작은따옴표, 큰따옴표는 포함됨).

한글 문자열의 길이도 len으로 구하면 됩니다.

>>> hello = '안녕하세요'
>>> len(hello)
5

'안녕하세요'가 5글자이므로 길이는 5가 나옵니다.

참고 | UTF-8 문자열의 바이트 수 구하기

한글, 한자, 일본어 등은 UTF-8 인코딩으로 저장하는데 문자열이 차지하는 실제 바이트 수를 구하는 방법은 다음과 같습니다.

>>> hello = '안녕하세요'
>>> len(hello.encode('utf-8'))
15

UTF-8에서 한글 글자 하나는 3바이트로 표현하므로 '안녕하세요'가 차지하는 실제 바이트 수는 15바이트입니다.

참고로 파이썬 3에서 len은 문자의 개수를 구해주지만 파이썬 2.7에서는 실제 바이트 수를 구해주는 차이점이 있습니다. 즉, 한글 문자열의 길이를 구할 때 파이썬 버전에 따라 결과가 달라지므로 주의해야 합니다.