일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬웹개발
- 랭체인
- pytorch
- 사이킷런
- langchain
- 판다스
- sklearn
- deeplearning
- fastapi #python웹개발
- 자연어분석
- 파이토치
- 파이토치기본
- NLP
- fastapi
- 파이썬
- programmablesearchengine
- HTML
- Python
- 머신러닝
- pandas
- 비지도학습
- chatGPT
- python 정렬
- 판다스 데이터정렬
- OpenAIAPI
- konlpy
- fastapi #파이썬웹개발
- MachineLearning
- 딥러닝
- 챗gpt
- Today
- Total
Data Navigator
len() 함수 사용 해서 list(리스트)와 tuple(튜플) 요소 갯수 구하기 본문
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에서 자료를 순차적으로 뽑아낼 때 많이 활용된다.
'Python' 카테고리의 다른 글
Invalid version: '0.996/ko-0.9.2' - Mecab 설치 오류 해결 - Ubuntu22.04, Konlpy, mecab (1) | 2023.06.27 |
---|---|
[python] python List와 Tuple 데이터 정렬 하기 sort, sorted (0) | 2021.04.11 |
KoNLPy 설치 오류시 해결 방법 - Python 3.8.5 기준 (0) | 2021.01.14 |
파이썬 코드 효율적으로 짜기 - 20시간을 2초로 바꾼 몇 줄의 코드 수정 (0) | 2021.01.13 |
list packing, list unpacking, tuple packing, tuple unpacking (0) | 2021.01.02 |