Data Navigator

len() 함수 사용 해서 list(리스트)와 tuple(튜플) 요소 갯수 구하기 본문

Python

len() 함수 사용 해서 list(리스트)와 tuple(튜플) 요소 갯수 구하기

코딩하고분석하는돌스 2021. 1. 3. 12:02

list와 tuple은 자료가 연속적으로 들어가 있다. . 

a = [1,2,3,4,5,6,7,8,9,10]
b = (1,2,3,4,5,6,7,8,9,10)
print(a)
print(b)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]   # 리스트 a의 출력 결과
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)   # 튜플 b의 출력 결과

그래서 일반 변수와는 다르게 list나 tuple안에 있는 값을 가져오려면 list/tuple 내의 위치(index)를 지정해서 가져와야 한다.

 

인덱스는 거의 모든 프로그래밍 언어에서 0번부터 시작한다. (R은 1번부터 시작)

 

index

0

1

2

3

4

5

6

7

8

9

a

1

2

3

4

5

6

7

8

9

10

b

1

2

3

4

5

6

7

8

9

10

 

 

위의 리스트 a 에서 2, 7만 출력하고 튜플 b에서 3, 8만 출력하고 싶다면

# a list에서 index 1번째, index 6번째를 출력
print(a[1],a[6])
2 7

# b tuple에서 index 2번째, index 7번째를 출력
print(b[2],b[7])
3 8

이런식으로 a 리스트에서 1번째, 6번째 값을  b튜플에서 2번째, 7번째 index를 호출해서 출력하면 된다. 

 

list나 tuple을 사용하다가 보면 그 안에 총 몇개의 자료가 들어있는지 알아야 할 경우가 많은데 그때 사용하는 함수가 len() 함수이다. len()함수는 길이를 뜻하는 length를 줄여서 쓴 것이다. 

 

사용법은 len(길이를 구하고 싶은 변수, 리스트, 튜플 등) 의 형식으로 사용하면 된다. 

 

위에서 만든 list a와 tuple b를 넣어보면 

# list a의 갯수를 len()함수로 구하기
print(len(a))
10

# tuple b의 갯수를 len()함수로 구하기
print(len(b))
10

각각 10개씩 자료가 들어있음을 알 수 있다. 

 

-------------------------------------------------------------------------------------------------------------------

list와 len()을 활용한 실전 예시

 

list나 tuple을 len()함수와 함께 사용하는 경우는 보통 for문을 이용해서 list나 tuple의 값을 출력할 때 많이 사용한다.

 

아래의 population 함수에는 dict형태로 우리나라 도시별 인구 자료들이 들어있다.

출력된 내용을 자세히 보면 'result' 키의 값으로 [ ] 리스트가 있고 그 리스트 안에 시코드(adm_cd), 시 이름(dm_nm), 평균 나이(avg_age), 인구수(population)의 자료가 시별로 들어 있다. 

population

{'id': 'API_0312',
 'result': [{'adm_cd': '11',
   'adm_nm': '서울특별시',
   'avg_age': '51.9',
   'population': '9157007'},
  {'adm_cd': '21',
   'adm_nm': '부산광역시',
   'avg_age': '51.1',
   'population': '3279305'},
  {'adm_cd': '22',
   'adm_nm': '대구광역시',
   'avg_age': '51.4',
   'population': '2363685'},
  {'adm_cd': '23',
   'adm_nm': '인천광역시',
   'avg_age': '51.5',
   'population': '2820800'},
  {'adm_cd': '24',
   'adm_nm': '광주광역시',
   'avg_age': '51.4',
   'population': '1439844'},
  {'adm_cd': '25',
   'adm_nm': '대전광역시',
   'avg_age': '51.5',
   'population': '1458415'},
  {'adm_cd': '26',
   'adm_nm': '울산광역시',
   'avg_age': '50.5',
   'population': '1102307'},
  {'adm_cd': '29',
   'adm_nm': '세종특별자치시',
   'avg_age': '51.5',
   'population': '327826'},
  {'adm_cd': '31',
   'adm_nm': '경기도',
   'avg_age': '51.5',
   'population': '12575394'},
  {'adm_cd': '32',
   'adm_nm': '강원도',
   'avg_age': '50.7',
   'population': '1474261'},
  {'adm_cd': '33',
   'adm_nm': '충청북도',
   'avg_age': '50.8',
   'population': '1554220'},
  {'adm_cd': '34', 'adm_nm': '충청남도', 'avg_age': '51', 'population': '2065395'},
  {'adm_cd': '35',
   'adm_nm': '전라북도',
   'avg_age': '51.1',
   'population': '1745902'},
  {'adm_cd': '36',
   'adm_nm': '전라남도',
   'avg_age': '50.8',
   'population': '1721441'},
  {'adm_cd': '37',
   'adm_nm': '경상북도',
   'avg_age': '50.7',
   'population': '2559783'},
  {'adm_cd': '38',
   'adm_nm': '경상남도',
   'avg_age': '50.7',
   'population': '3208479'},
  {'adm_cd': '39',
   'adm_nm': '제주특별자치도',
   'avg_age': '51.8',
   'population': '629786'}],
 'errMsg': 'Success',
 'errCd': 0,
 'trId': 'lZFX_API_0312_1607150217679'}

위의 자료에서 데이터를 각각 뽑아내기 위해서는 'result'안에 있는 리스트의 자료를 하나씩 불러와서 다시 세부 데이터의 키값으로 내용을 뽑아내야 한다.

 

index

자료

자료를 가져오는 코드

0

{'adm_cd': '11', 'adm_nm': '서울특별시', 'avg_age': '51.9', 'population': '9157007'},

population['result'][0]

1

{'adm_cd': '21', 'adm_nm': '부산광역시', 'avg_age': '51.1', 'population': '3279305'}

population['result'][1]

2

{'adm_cd': '22', 'adm_nm': '대구광역시', 'avg_age': '51.4', 'population': '2363685'}

population['result'][2]

3

{'adm_cd': '23', 'adm_nm': '인천광역시', 'avg_age': '51.5', 'population': '2820800'}

population['result'][3]

 

한 개의 시의 데이터만 뽑는다면 인덱스를 하나씩 세고 적으면 되지만 자료가 많고 구조가 복잡하므로 일단 순서대로 다 뽑고 나중에 따로 추려내는 것이 더 편하다. 그럴 때 전체 list의 길이를 알면 시 한 곳씩 자료를 가져올 수 있으므로 len()를 사용하여 아래와 같이 코드를 작성하면 데이터를 가져올 수 있다. 

 

#코드가 너무 길어지므로 공통되는 키 값 population['result']를 people에 담음
people = population['result']    

# 전국 시/도 코드, 시/도이름, 평균나이, 인구
# len(people)를 사용해 각 전체 시도 인구 자료 갯수를 가져옴
# len(people)로 가져온 갯수만큼 range()함수로 반복 횟수를 정한 후 for문 반복
for i in range(len(people)):   
    si_do_code = people[i]['adm_cd']
    si_do_name = people[i]['adm_nm']
    si_do_mean_age = people[i]['avg_age']
    si_do_demo = str(people[i]['population'])
    print(si_do_code, si_do_name, si_do_mean_age, si_do_demo)
    
# 출력 결과    
11 서울특별시 51.9 9157007
21 부산광역시 51.1 3279305
22 대구광역시 51.4 2363685
23 인천광역시 51.5 2820800

 

이처럼 len()함수는 range()와 조합해서 for문을 이용해 list에서 자료를 순차적으로 뽑아낼 때 많이 활용된다.