티스토리 뷰

PYTHON

PYTHON 자료구조

Y.일월 2019. 10. 24. 17:13

Python의 자료구조에는 크게 4가지가 있다.






1. List 


List는 Python의 기본 자료구조에 속한다.

앞뒤에 주소가 달리는 형태로 이루어져 있는데, JAVA에서 배열과 같은 형태로 데이터를 저장한다.


List는 다음과 같이 만들어 진다.



리스트이름 = [요소1, 요소2, 요소3, .... ]



리스트는 순서가 있는 값들의 집합으로써, 데이터에 하나하나 이름을 붙이지 않고 번호를 통해 각각의 데이터에 접근한다.

즉, 인덱싱을 통해 데이터에 접근한다.


print(data1[0])

>> 10


List의 장점은 data type이 없다는 것이다.

즉, List는 숫자형 데이터, 문자형 데이터를 둘 다 저장 가능하다.


lists =[ 1,100, 'python']

print(lists)


>> [1, 100, 'python']





리스트 연산


1) 리스트 슬라이싱


data2 = ["사과", "배", "포도", "딸기", "토마토", "메론"]

print(data2[2:4])


>>  ['포도', '딸기']


2) 리스트 병합


data1 + data2


>> [10, 20, 30, 40, 50, 60, '사과', '배', '포도', '딸기', '토마토', '메론']



3) 리스트 데이터 추가 및 삭제


lists =[ 1,100, 'python']

lists.append('py')

print(lists)


>> [1, 100, 'python', 'py']


lists.insert(1, '0.5')

print(lists)

lists.remove('py')

print(lists)


>>

[1, '0.5', 100, 'python', 'py']

[1, '0.5', 100, 'python']



4) 최대값 최소값 구하기


data_list = [10,20,30,40,50,60,70]

print(min(data_list))

print(max(data_list))


>>

10

70


5) 데이터 정렬


data_list = [50,20,40,30,10,60,90]

data_list.sort()


>> [10, 20, 30, 40, 50, 60, 90]







2. TUPLE ( 튜플 )  


튜플은 순서가 있는 자료 구조이며,  저장방식은 리스트와 같지만, 데이터의 직접 변경이 불가능하다는 점에서 리스트와 다르다.

즉, append, insert등의 함수가 사용불가하고, data[0] = 100과 같이 인덱싱을 통한 데이터 변경이 불가하다.


하지만, 튜플은 리스트에 비해 접근 속도가 빠르다는 장점이 있기 때문에 함수의 매개변수, 리턴값으로 자주 사용한다.


튜플은 다음과 같이 만들어 진다.




튜플이름 = (요소1, 요소2, 요소3, .... )



data = ('사과', '배', '포도', '토마토', '딸기')

print(data)


>>  ('사과', '배', '포도', '토마토', '딸기')





튜플 연산


1) 튜플 슬라이싱


data = (100, 200, 100, 300, 100, 500)

print(data[2:4])


>>  (100, 300)


2) 튜플 병합


fruit = ('사과', '배', '포도', '토마토', '딸기')

total_data = fruit + data

print(total_data)


>> ('사과', '배', '포도', '토마토', '딸기', 100, 200, 100, 300, 100, 500)


3) 튜플 데이터 반복


print(data * 2)


>>(100, 200, 100, 300, 100, 500, 100, 200, 100, 300, 100, 500)







3. SET ( 세트 )  


세트는 우리가 수학에서 배웠던 집합의 개념이다.

순서가 없고, 중복을 허용하지 않는다. 

변경가능한 객체이므로, 데이터를 추가하거나 삭제가 가능하지만, 인덱스가 없으므로, 인덱싱과 연산은 불가하다.



세트은 다음과 같이 만들어 진다.



세트이름 = {항목1, 항목2, 항목3, 항목4 .... }



data = {100,200,300,400,500,600}

print(data)


>> {100, 200, 300, 400, 500, 600}





세트 연산


1)데이터 추가.


data = {100,200,300,400,500,600}

data.add(700)

print(data)


>> {100, 200, 300, 400, 500, 600, 700}


2)데이터 업데이트


data = {100}

data.update([200,300])

print(data)


>> {200, 100, 300}


3)데이터 삭제


data.remove(300)

print(data)


>> {200, 100}


4)세트 데이터 초기화


data.clear()

print(data)


>> set()




SET - 집합연산



1)교집합


A = {100,200,300,400,500}

B = {100,150,200,250,300}

print(A.intersection(B))

>> {200, 100, 300}


2)차집합


print(A.difference(B))

>> {400, 500}


3)합집합


print(A.union(B))

>> {100, 200, 300, 400, 500, 150, 250}






4. DICTIONARY ( 딕셔너리 )


사전이라는 의미의 딕셔너리는 데이터를 key와 value로 나누어 담고 있다.

딕셔너리는 set과 같이 순서가 없지만, 검색속도가 빠르다는 장점이 있다.


딕셔너리는 다음과 같이 만들어 진다.



딕셔너리이름 = { "key1" : value1, "key2" : value2, "key3" : value3, .... }



data = {"사과" : 300, "배" : 200, "포도" : 500, "딸기" : 700}

print(data)


>> {'사과': 300, '배': 200, '포도': 500, '딸기': 700}



딕셔너리 연산


1)항목검색


data = {"사과" : 300, "배" : 200, "포도" : 500, "딸기" : 700}

print(data["사과"])

print(data.get("사과"))

>> 300

300


2)항목추가


data["메론"] = 1000

print(data)


>> {'사과': 300, '배': 200, '포도': 500, '딸기': 700, '메론': 1000}


3)항목삭제


data.pop("사과")

print(data)


>> {'배': 200, '포도': 500, '딸기': 700, '메론': 1000}


4)항목정렬


print(sorted(data))

print(sorted(data.values()))


>> ['딸기', '메론', '배', '포도']

[200, 500, 700, 1000]



'PYTHON' 카테고리의 다른 글

Numpy & Pandas  (0) 2019.10.26
공지사항
최근에 올라온 글