Python 자료구조 1

조천룡·2023년 5월 17일

python

목록 보기
6/13
post-thumbnail

자료구조

정의

  • 여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고,
    이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.

종류

  • 자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인
    컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋트(Set)가 있다.

리스트

리스트란?

  • 배열과 같이 여러 개의 데이터를 나열한 자료구조. ( 데이터를 줄 세우자 )

리스트 선언

  • ‘[ ]’를 이용해서 선언하고, 데이터 구분은 ‘,’를 이용한다.
  • 숫자, 문자(열), 논리형 등 모든 기본데이터를 같이 저장할수 있다.
  • 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.

인덱스

  • 아이템에 자동으로 부여되는 번호표.

아이템 조회

  • 리스트 아이템은 인덱스를 이용해서 조회 가능하다.
print('students[0]: {}'.format(students[0]))
print('students[1]: {}'.format(students[1]))
print('students[2]: {}'.format(students[2]))
print('students[3]: {}'.format(students[3]))
print('students[4]: {}'.format(students[4]))

아이템 개수

  • 리스트 길이란? 리스트에 저장된 아이템 개수를 뜻한다.

len()을 이용한 조회

  • len()과 반복문을 이용하면 리스트의 아이템 조회가 가능하다.
for i in range(len(students)):
	print('i: {}'.format(i)
    print('students[{}]: {}'.format(i, students[i]))
  • len() 함수는 리스트의 개수뿐만 아니라 문자열의 길이도 알 수 있다.

for문을 이용한 조회

  • for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
for i in range(len(cars)):
	print(cars[i])
    
for car in cars:
	print(car)
  • for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
  • for문을 이용하면 리스트 내부에 또 다른 리스트의 아이템을 조회할 수도 있다.
studentCnts = [[1,19], [2,20], [3,22], [4,18], [5,21]]

for classNo, cnt in studentCnts:
	print('{}학급 학생수: {}'.format(classNO, cnt)

while문을 이용한 조회

  • while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.

enumerate()

  • enumerate() 함수를 이용하여 아이템을 열거할 수 있다. 인덱스와 아이템을 한번에 조회.
sports = ['농구', '수구', '축구', '마라톤', '테니스']

for i in range(len(sports)):
	print('{} : {}'.format(i, sports[i]))
    
for idx, value in enumerate(sprots):
	print('{} : {}'.format(i, sports[i]))
  • enumerate()는 문자열에도 적용할 수 있다.
str = 'Hello python'

for idx, value in enumerate(str):
	print('{} : {}'.format(idx, value))

아이템 추가

append()

  • append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.

insert( )

  • insert() 함수를 이용하면 특정 위치(인덱스)에 아이템을 추가할 수 있다.

아이템 삭제

pop()

  • pop() 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있다.

  • pop(n) 함수를 n인덱스에 해당하는 아이템을 삭제할 수 있다.

remove()

  • remove() 함수를 이용하면 특정 아이템을 삭제할 수 있다.

  • remove()는 한 개의 아이템만 삭제 가능하다. 만약 삭제하려는 데이터가2개 이상이라면 while문을 이용하자.
subjects = ['국어', '영어', '수학', '과학', '국사']
print('시험 과목표: {}'.format(subjects))

removeSubject = input('삭제 과목명 입력: ')

while removeSubject in subjects:
    subjects.remove(removeSubject)

print('시험 과목표: {}'.format(subjects))

아이템 확장

extend()

  • extend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다. (list1)

  • 덧셈 연산자를 이용해서 리스트를 연결할 수도 있다. (list3)

아이템 정렬

sort()

  • sort() 함수를 이용하면 아이템을 정렬할 수 있다.

reverse()

  • reverse() 함수를 이용하면 아이템을 순서를 뒤집을 수 있다.

슬라이싱

  • [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.

  • 슬라이싱할 때 단계를 설정할 수 있다.
numbers = [2, 44, 33, 43, ,46, 87, 54]

print('numbers: {}'.format(numbers[:-2:2]))
  • 슬라이싱을 이용해서 아이템을 변경할 수 있다.
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']

students[1:4] = ['park chanho', 'lee yonggyu', 'gang hodong']
print('students : {}'.format(students))

slice()

  • slice()함수를 이용해서 아이템을 슬라이싱할 수 있다.

코드

students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))

print('students : {}'.format(students[slice(2,4)]))
print('students : {}'.format(students[slice(4)]))
print('students : {}'.format(students[slice(2,len(students))]))
print('students : {}'.format(students[slice(2,len(students)-2)]))
print('students : {}'.format(students[slice(len(students)-5,len(students)-2)]))

출력

나머지 기능들

리스트 곱셈 연산

  • 리스트를 곱셈 연산하면 아이템이 반복된다.

index()

  • index(item) 함수를 item의 인덱스를 알아낼 수 있다.

count()

  • count() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다.

del 키워드

  • del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.

profile
10√2 Data

0개의 댓글