NOW OR NEVER

[Python] 5. Python 자료구조(List, Tuple) 본문

Back-End/Python

[Python] 5. Python 자료구조(List, Tuple)

LAURA 2021. 8. 21. 23:49
반응형

 

파이썬 자료구조(List, Tuple)

- 정말 잘 알아야 능수능란하게 할 수 있고 적재적소로 활용 가능

- 기초 자료형 중 데이터를 담을 수 있는 한곳에 모아서 처리할 수 있는 데이터 타입

- 많은 변수를 사용하는 것은 비효율적이다. 코드도 많이 써야하고 수정사항이나 삭제사항을 다 찾아서 일일이 다 지워야 하는 번거로움이 있다. 코드 변경시 효율적이지 못하므로 자료구조를 활용해야 한다.


 

1. List 리스트

- 그릇이라 생각 하면 됨

- 배열(숫자의 모음, 학생의 모음 등)

-  순서가 있고 중복도 되며 수정도 가능하고 삭제도 가능해서 dictionary와 더불어 가장 많이 쓰는 데이터 타입

 

- 선언방식

-> 리스트 안에 리스트도 가능

-> 타입이 다른 데이터 같이 선언가능

 ->변수=[ ], 변수=list()

 

- 인덱싱

->문자열 한번 할당하면 변경할 수 없다. 내부적으로 한글자 한글자가 0부터 숫자로 인덱스로 할당되어 있기 때문이다.

-> 원하는 값 할당 가능

 

- 슬라이싱 (인덱스의 범위 지정시)

 -> 범위에 해당하는 값들이 리스트 형태로 나옴

 -> 값들보다 범위가 클 경우 범위 바로 이전 값까지 출력

 

- 연산

-> + : 여러 개의 리스트들을 더하면 하나의 리스트로 만들 수 있다.

-> * : 곱한 수만큼 리스트 안 데이터가 반복된다.

-> 값을 가져와서 연산을 할 수 있다.

 

- 수정

 -> 리스트 특정 인덱스를 지정하여 그 리스트 내 데이터 부분 수정 가능

 -> 리스트 특정 범위를 지정하여 그 범위 내에 있는 리스트 내 데이터 수정 가능(슬라이싱 했을 경우 하나의 리스트에 변경할 데이터들이 들어감)

 -> 리스트 특정 인덱스를 선택후 또다른 리스트 자체를 값으로 넣으면 리스트 안에 또다른 리스트가 중첩된다.

 

- 삭제

 ->del 삭제할 데이터의 리스트[데이터의 인덱스]

 

- 함수

 ->리스트.append(추가할 데이터) : 리스트 내 끝부분에 데이터 삽입, 리스트 자체를 삽입

-> 리스트.extend(연장할 리스트가 담긴 변수) : 끝부분에 원소로서 하나의 리스트로 출력, 현재 리스트에서 값을 연장, append 함수와 다른 점 기억

 ->리스트.sort() : 리스트 내 데이터 오름차순 정렬

 -> 리스트.reverse() : 리스트 내 데이터 역순 정렬

->리스트.insert(삽입할 인덱스 위치, 삽입할 데이터) : 리스트 해당 인덱스에 데이터 삽입, append함수와 다른 점 기억해두기

 

[삭제]

 -> del

-> 리스트.remove(삭제할 데이터) : del일때는 인덱스 위치한 데이터를 지웠지만 이 함수는 데이터값을 통해 데이터를 지움

-> 리스트.pop() : 스택으로 LIFO(Last In First Out) 마지막에 들어간게 먼저 나온다는 뜻 이다. 리스트의 마지막 원소를 꺼내고 삭제, 계속 사용하면 언젠간 error 발생(빠지고 없어지고를 반복하면 비어있는 걸을 빼내려고 하니까 발생)


 

2. Tuple 튜플

- 순서 있음

- 중복 가능

- 수정 불가능 (수정함수 안됨)

- 삭제 불가능(삭제 함수 안됨)

- 계좌번호 등과 같은 중요 데이터들을 튜플에 넣고 사용하면 실행이 오작동 되거나 프로그램 흐름에 치명적인 영향을 주는 것을 방지할 수 있다.

- 선언방식

-> 변수 = ( )

-> 튜플 안에 튜플 선언 가능

 

- 인덱싱 가능

 

- 슬라이싱 가능

 -> 슬라이싱 후 출력시 특정 인덱스부터 다 나오라고 할 시 끝에가 ,로 끝나야함

 

- 연산은 리스트와 동일한 방식으로 한다.

 

- 함수

 ->print(데이터 값 in 튜플) : 이 튜플 안에 이 데이터 값이 존재하는 지 확인 true/false로 반환

 -> print(튜플.index(데이터 값)) : 튜플에서 이 데이터 값이 있는 인덱스를 반환

 -> print(튜플.count(데이터 값)) : 튜플에서의 이 데이터 값의 갯수