코딩/Python

[Python] 파이썬 리스트 배열 클래스로 구현하고 사용하기

Prayy 2023. 10. 1. 23:31
반응형

언젠가의 자료구조 수업에서 진행했던 과제이다.

파이썬 리스트를 별도 파일에서 클래스로 구현하고, 이를 다른 파일에서 모듈로 불러와 사용한다.

리스트를 배열 - 클래스 스타일로 구현

<코드 본문>

class ArrayList:
    def __init__(self ):
        self.items=[]
 
    def insert(self,pos,elem):
        self.items.insert(pos,elem)
    def delete(self,pos):
        return self.items.pop(pos)
    def isEmpty(self ):
        return self.size()==0
    def getEntry(self,pos):
        return self.items[pos]
    def size(self):
        return len(self.items)
    def clear(self):
        self.items=[]
    def find(self,item):
        return self.items.index(item)
    def replace(self,pos,elem):
        self.items[pos]=elem
    def sort(self):
        self.items.sort()
    def merge_1(self,lst):
        self.items.extend(lst)
    def merge_2(self, otherArryList):
        self.items.extend(otherArryList.items)
    def display(self,msg='ArrayList:'):
        print(msg,'항목수=',self.size(),self.items)

init - 요소들을 저장할 items 리스트를 생성한다

insert - pos로 입력된 인덱스에 elem을 삽입하고 리턴한다

delete - pos로 입력된 인덱스의 요소를 삭제하고 리턴한다

isEmpty - 리스트가 비어있다면 True, 그렇지 않다면 False를 리턴한다

getEntry - pos로 입력된 인덱스의 요소를 리턴한다

size - 리스트 내 요소의 개수(리스트의 길이)를 리턴한다

clear - 리스트 내 요소를 모두 지운다. (초기화 하는 것과 동일하다)

find - item으로 입력받은 요소의 인덱스를 반환한다

replace - pos 인덱스의 요소를 elem으로 바꾼다

sort - 오름차순으로 요소를 정렬한다

merge - 인자로 입력받은 lst를 items 리스트 우측에 병합한다.

merge_2 - 입력받은 otherArryList 우측에 items를 병합한다

 

 

클래스 테스트 진행

s=ArrayList()
s.display('파이썬 리스트로 구현한 리스트 테스트')

s.insert(0,10)
s.insert(0,20)
s.insert(1,30)
s.insert(s.size(),40)
s.insert(2,50)

s.display('파이썬 리스트로 구현한 List(삽입*5): ')
s.sort()
s.display('파이썬 리스트로 구현한 List(정렬후): ')
s.replace(2,90)
s.display('파이썬 리스트로 구현한 List(교체*1): ')
s.delete(2)
s.delete(s.size()-1)
s.delete(0)
s.display('파이썬 리스트로 구현한 List(삭제*3): ')
lst1=[1,2,3]
s.merge_1(lst1)
s.display('파이썬 리스트로 구현한 List(병합후): ')

lst=ArrayList()
lst.insert(0,6)
lst.insert(0,5)
lst.insert(0,4)
s.merge_2(lst)
s.display('파이썬 리스트로 구현한 List(병합후): ')
s.clear()
s.display('파이썬 리스트로 구현한 List(클리어): ')

 

결과

파이썬 리스트로 구현한 리스트 테스트 항목수= 0 []
파이썬 리스트로 구현한 List(삽입*5):  항목수= 5 [20, 30, 50, 10, 40]      
파이썬 리스트로 구현한 List(정렬후):  항목수= 5 [10, 20, 30, 40, 50]      
파이썬 리스트로 구현한 List(교체*1):  항목수= 5 [10, 20, 90, 40, 50]      
파이썬 리스트로 구현한 List(삭제*3):  항목수= 2 [20, 40]
파이썬 리스트로 구현한 List(병합후):  항목수= 5 [20, 40, 1, 2, 3]
파이썬 리스트로 구현한 List(병합후):  항목수= 8 [20, 40, 1, 2, 3, 4, 5, 6]
파이썬 리스트로 구현한 List(클리어):  항목수= 0 []

 

반응형