파이썬(Python) 자료구조 ①리스트
- IT2/python
- 2023. 8. 23. 23:41
반응형
자료구조 개념
메모리에 효율적으로 저장 및 반환하는 방법으로 데이터를 관리한다. 대용량일수록 상대적으로 높은 성능을 요구하므로 무엇보다 메모리에 빠르게 저장하고 검색이 필요하다. 자료 구조는 이런 상황에서 효율적인 메모리 작동을 위해 사용된다.
조금 더 자세하게 얘기해 보면,
만약 데이터를 변수에 저장해 놓으면 사용하지 않을 때에도 메모리에 적재되어 있어 지속적으로 성능을 잡아먹는다.
반면에 자료 구조를 사용하면 필요시 메모리에 그때그때 적재하여 실행하므로 성능 부하도 줄일 수 있으며 실행 시간도 빨라진다.
자료 구조를 한마디로 요약하자면 데이터 장바구니라고 생각하면 된다. 필요한 것만 담고, 필요 없는 건 담지 않는다.
자료구조 종류
종류 | 순서 | 수정 | 기호 | 사용법 |
리스트(list) | O | O | [ ] 대괄호 | newlist = [] newlist = list() newlist = [123, 456, 789] |
튜플(tuple) | O | X | ( ) 소괄호 | newtuple = () newtuple = tuple() newtuple = (123, 456, 789) newtutple = 123, 456, 789 |
딕셔너리(dict) | X | O | { } 중괄호 | newdict = {} newdict = dict() |
※. 참고사항
순서 O = 인덱싱/슬라이싱 가능
리스트
생성
#리스트를 사용하지 않으면 하나하나 변수에 값을 넣어야하는 불편함이 있음
아시아1 = '한국'
아시아2 = '일본'
아시아3 = '중국'
print(아시아1)
한국
print(아시아2)
일본
print(아시아3)
중국
#리스트 사용하여 동일한 성격을 띄는 그룹에 데이터를 한번에 넣을 수 있음
아시아 = ['한국', '일본', '중국']
print(type(아시아))
<class 'list'>
print(아시아)
['한국', '일본', '중국']
# 여러 데이터를 리스트 형태로 넣기
OS = ['AIX', 'HPUX', 'SOLARIS', 'REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
print(type(OS))
<class 'list'>
print(OS)
['AIX', 'HPUX', 'SOLARIS', 'REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
인덱싱
리스트는 순서가 존재하므로 정수 값을 활용해 인덱싱 가능 * 파이썬 인덱싱 개념 및 실습 요약
# 리스트 생성
OS = ['AIX', 'HPUX', 'SOLARIS', 'REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
# 돌발퀴즈
# UNIX에 해당되는 OS만 출력해보세요.
# 정답1 - 인덱싱 활용
print(OS[0])
AIX
print(OS[1])
HPUX
print(OS[2])
SOLARIS
슬라이싱
리스트는 순서가 존재하므로 정수 값을 활용해 슬라이싱 가능 * 파이썬 슬라이싱 개념 및 실습 요약
# 슬라이싱을 활용한다면 아래처럼 출력할 수 있음
# 정답2 - 슬라이싱 활용
print(OS[0:3])
['AIX', 'HPUX', 'SOLARIS']
# 정답3 - 슬라이싱 활용
print(OS[:3])
['AIX', 'HPUX', 'SOLARIS']
# 정답4 - 슬라이싱 활용
print(OS[-5::-1])
['SOLARIS', 'HPUX', 'AIX']
수정
리스트[인덱스] = 데이터
리스트[슬라이싱] = 데이터(여러 개)
인덱스 정수값을 활용
# 리스트 확인
print(OS)
['AIX', 'HPUX', 'SOLARIS', 'REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
# 리스트 수정
OS[0] = 'AIB'
OS[1] = 'HPOX'
OS[2] = 'SOIL'
OS[3] = 'BLUEHAT'
print(OS)
['AIB', 'HPOX', 'SOIL', 'BLUEHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
# 또는 슬라이싱 기법을 활용해 2개 이상의 데이터를 일괄 수정 가능
OS[0:4] = ['AIB', 'HPOX', 'SOIL', 'BLUEHAT']
print(OS)
['AIB', 'HPOX', 'SOIL', 'BLUEHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
추가 (삽입-insert은 특정 인덱스 위치에 추가 가능)
리스트.append(데이터)
기본적으로 맨 뒤에 데이터가 추가됨
# 리스트 확인
print(OS)
['AIB', 'HPOX', 'SOIL', 'BLUEHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY']
# 리스트 추가
OS.append('FEDORA')
OS.append('KALI')
print(OS)
['AIB', 'HPOX', 'SOIL', 'BLUEHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'KALI']
삭제
del 리스트[인덱스]
del 리스트[슬라이싱]
# 리스트 확인
print(OS)
['AIB', 'HPOX', 'SOIL', 'BLUEHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'KALI']
# 리스트 삭제
del OS[1]
print(OS)
['AIB', 'SOIL', 'BLUEHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'KALI']
# 슬라이싱으로 여러 데이터 일괄 삭제
del OS[0:4]
print(OS)
['CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'KALI']
삽입
리스트.insert(인덱스, 데이터)
# 리스트 확인
print(OS)
['CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'KALI']
# 리스트 삽입 (인덱스 정수값을 이용해 특정 위치에 데이터 삽입)
OS.insert(0, 'REDHAT')
print(OS)
['REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'KALI']
OS.insert(6, 'MINT')
print(OS)
['REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'MINT', 'KALI']
OS.insert(0, 'LINUX Operation System:')
print(OS)
['LINUX Operation System:', 'REDHAT', 'CENTOS', 'UBUNTU', 'DEBIAN', 'LOCKY', 'FEDORA', 'MINT', 'KALI']
반응형
'IT2 > python' 카테고리의 다른 글
파이썬(Python) 자료구조 ②튜플 (0) | 2023.08.30 |
---|---|
파이썬(Python) 자료구조 ①리스트 - 관련 함수 (2) | 2023.08.29 |
파이썬(Python) 데이터 타입 변환 (0) | 2023.08.20 |
파이썬(Python) 문자열 주요 함수 (0) | 2023.08.16 |
파이썬(Python) 문자열 인덱싱/슬라이싱 (1) | 2023.08.15 |