파이썬(Python) 자료구조 ①리스트

반응형

자료구조 개념

메모리에 효율적으로 저장 및 반환하는 방법으로 데이터를 관리한다. 대용량일수록 상대적으로 높은 성능을 요구하므로 무엇보다 메모리에 빠르게 저장하고 검색이 필요하다. 자료 구조는 이런 상황에서 효율적인 메모리 작동을 위해 사용된다.

 

조금 더 자세하게 얘기해 보면,

만약 데이터를 변수에 저장해 놓으면 사용하지 않을 때에도 메모리에 적재되어 있어 지속적으로 성능을 잡아먹는다.

반면에 자료 구조를 사용하면 필요시 메모리에 그때그때 적재하여 실행하므로 성능 부하도 줄일 수 있으며 실행 시간도 빨라진다.

 

자료 구조를 한마디로 요약하자면 데이터 장바구니라고 생각하면 된다. 필요한 것만 담고, 필요 없는 건 담지 않는다.

 

자료구조 종류

종류 순서 수정 기호 사용법
리스트(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']

 

 

 

 

 

 

 

 

반응형

댓글

Designed by JB FACTORY