Python기초강의강좌, 파이썬기초강의강좌, 리스트(List). 튜플(Tuple)
#025 파이썬 기초 - 자료구조 2편 (Python Data Structure Part 2)
지난 시간에 이어서 자료구조 학습 계속합니다.
리스트 자료구조를 사용하는 방법과 튜플 자료구조에 대해서 알아보겠습니다.
리스트(List) 자료구조 컨트롤 방법
테스트를 위해 주식 종목 10개를 담은 리스트를 정의합니다.
테스트는 Python Shell에서 해보세요.
>>> kospi_10 = ['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모비스']
리스트 인덱싱
여기서 5번째 종목을 출력해 보겠습니다.
>>> print("5번째 종목 : ", kospi_10[4])
5번째 종목 : 아모레퍼시픽
이처럼 인덱싱을 사용해 데이터에 접근할 수 있습니다. 인덱스는 0부터 시작한다는 걸 잊지 마세요.
리스트 슬라이싱
10개 종목 중 처음부터 5개 종목을 잘라서 새로운 리스트를 만들어 보겠습니다.
>>> kospi_5 = kospi_10[0:5]
>>> kospi_5
['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽']
위처럼 기존의 리스트에서 슬라이싱 해서 사용할 수 있습니다.
인덱스 0부터 5번 이전까지를 가져오라는 명령입니다.
또한 중간에 있는 데이터도 잘라서 사용할 수 있습니다.
>>> kospi_6_10 = kospi_10[5:10]
>>> kospi_6_10
['제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모비스']
위는 인덱스 5부터 10번 이전까지를 가져오라는 명령입니다.
아래와 같이 슬라이싱 할 수 있습니다. (인덱싱은 0부터 시작이라는 걸 기억하세요.)
>>> kospi_10[:5] # 처음부터 5 이전까지 (인덱스 0 ~ 4)
['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽']
>>> kospi_10[5:] # 5부터 마지막까지 (인덱스 5 ~ 9)
['제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모비스']
>>> kospi_10[3:5] # 3부터 5 이전까지 (인덱스 3 ~ 4)
['한국전력', '아모레퍼시픽']
>>> kospi_10[3:-1] # 3부터 -1 (10-1) 이전까지 (인덱스 3 ~ 8)
['한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성생명', 'NAVER']
리스트에 데이터 삽입하기
기존의 리스트에 새로운 데이터를 삽입하려면 append 메서드를 사용하면 됩니다.
>>> kospi_10.append('SK텔레콤')
>>> kospi_10
['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모비스', 'SK텔레콤']
인덱스의 중간에 삽입하려면 insert 메서드를 사용하면 됩니다.
>>> kospi_10.insert(3, '키움증권')
>>> kospi_10
['삼성전자', 'SK하이닉스', '현대차', '키움증권', '한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모비스', 'SK텔레콤']
리스트에서 데이터 삭제하기
리스트의 데이터 개수 확인은 len내장 함수로 확인 가능합니다.
>>> len(kospi_10)
12
데이터를 삭제할 때는
del kospi_10[index]의 형태로 하면 됩니다.
4번째 값인 '키움증권'을 삭제하려면
>>> del kospi_10[3]
>>> kospi_10
['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모 비스', 'SK텔레콤']
튜플(Tuple)
튜플은 여러 개의 객체를 모아 담는 데 사용됩니다. 튜플은 리스트와 비슷하지만, 리스트 클래스에 있는 여러 가지 기능이 없습니다. 또 튜플은 수정이 불가능하며, 그래서 주로 문자열과 같이 *비정적*인 객체들을 담을 때 사용됩니다.
튜플은 생략할 수 있는 괄호로 묶인 쉼표로 구분된 여러 개의 항목으로 정의됩니다.
튜플에 저장된 값들은 수정이 불가능하기 때문에, 단순 값들의 목록을 다루는 구문이나 사용자 정의 함수에서 주로 사용됩니다.
예제 ( ds_using_tuple.py로 저장하세요):
# Filename : ds_using_tuple.py
# I would recommend always using parentheses
# to indicate start and end of tuple
# even though parentheses are optional.
# Explicit is better than implicit.
zoo = ('python', 'elephant', 'penguin')
print('Number of animals in the zoo is', len(zoo))
new_zoo = 'monkey', 'camel', zoo
print('Number of cages in the new zoo is', len(new_zoo))
print('All animals in new zoo are', new_zoo)
print('Animals brought from old zoo are', new_zoo[2])
print('Last animal brought from old zoo is', new_zoo[2][2])
print('Number of animals in the new zoo is', \
len(new_zoo)-1+len(new_zoo[2]))
▶ 실행 결과 :
C:\Anaconda\envs\study_39\python.exe E:\python_study\ds_using_tuple.py
Number of animals in the zoo is 3
Number of cages in the new zoo is 3
All animals in new zoo are ('monkey', 'camel', ('python', 'elephant', 'penguin'))
Animals brought from old zoo are ('python', 'elephant', 'penguin')
Last animal brought from old zoo is penguin
Number of animals in the new zoo is 5
▶ 동작 원리 :
zoo는 여러 항목들을 담고 있는 튜플입니다. 보시는 바와 같이 len 함수를 통해 튜플의 길이를 알아올 수 있습니다. 튜플은 열거형 의 한 예입니다.
이제 동물원(zoo) 안의 동물들을 새로운 동물원으로 옮겨야 한다고 해 봅시다. 이를 위해 새로운 동물원 new_zoo 튜플에 원래 있던 동물들과 함께 기존의 동물원에 있던 동물들을 옮겨 옵니다. 다시 파이썬으로 돌아와서, 이와 같이 튜플 안에 튜플을 담아도 튜플의 성질을 잃지 않습니다.
리스트에서 했던 것과 같이, 튜플 안에 있는 항목의 위치를 대괄호로 묶어 지정해 주면 각 항목에 접근할 수 있습니다. 이를 인덱싱 연산자라고 부릅니다. new_zoo의 세 번째 항목에 접근하려면 new_zoo [2]와 같이 하며, 이 세 번째 항목은 튜플이므로 이것의 세 번째 항목에 접근하려면 new_zoo [2][2]와 같이 합니다. 익숙해지면 쉽게 느껴질 것입니다.
#빈 튜플과 한 개짜리 튜플
빈 튜플은 괄호 안에 아무것도 적지 않고 myempty = ()와 같이 생성할 수 있습니다. 그러나, 항목 한 개만 담고 있는 튜플을 정의할 때는 주의해야 합니다. 이 경우 첫 번째 항목의 뒤에 쉼표를 붙여 주어 파이썬에게 이것이 숫자 연산에 사용되는 괄호가 아니라 객체를 담는 튜플을 의미하는 것이라는 것을 구분할 수 있도록 단서를 주어야 합니다. 예를 들어, 항목 2를 담고 있는 튜플을 정의하려면 singleton = (2 , )와 같이 합니다.
이번 시간에는 파이썬 자료구조 중 리스트를 사용하는 방법과 튜플에 대해서 알아보았습니다.
감사합니다.
Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다. |
'IT > 파이썬 기초 (Python)' 카테고리의 다른 글
#027 파이썬 기초 - 자료구조 4편 (Python Data Structure Part 4) (74) | 2023.03.09 |
---|---|
#026 파이썬 기초 - 자료구조 3편 (Python Data Structure Part 3) (87) | 2023.03.08 |
#024 파이썬 기초 - 자료구조 1편 (Python Data Structure Part 1) (84) | 2023.03.06 |
#023 파이썬 기초 - 모듈 3편 (Python Module Part 3) (77) | 2023.03.05 |
#022 파이썬 기초 - 모듈 2편 (Python Module Part 2) (58) | 2023.03.04 |
댓글