공부/python

[python] 자료형 _List,Stack

JangGiraffe 2016. 6. 14. 19:13

python은 모두 포인터로 이뤄져있다.

그래서 list a= [1,"hi"]같이 int형, String형 데이터타입을 한 곳에 넣을 수 있다.

왜냐하면 모두 포인터로 이뤄져 있어 같은 크기를 가지기 때문에 가능하다.

하지만 정말 특별한 경우가 아니면 동일한 데이터만 넣고 만들자.

 

 

 

 

List_ 내부 데이터 변경이 가능한 데이터의 연속적인 모임

 

- 데이터를 입력 순서대로 저장하는 자료형

- 내부데이터를 변경할 수 있고 크기도 변경 가능

- 시퀀스 자료형

 

1. 생성

1) 변수명 = [ 데이터 나열 ]

2) 변수명= 값..   .... 값에는 ragne(),튜플,list의 일부분 등이 들어갈 수 있다.

ex1) 중첩 리스트 : a = [4,5,6]     b = [1,2,3,a] - 선생님께서 비추천하셨음. 금기시하라고.

 

2. 접근

1) 변수명[인덱스]

2) 변수명[시작위치:종료위치]

 

3. 삭제

1) 1개 지우기

del 변수명[인덱스]

2) 여러개 지우기(일정 범위에 빈 값을 덮어쓰는 원리)

변수명[시작위치:종료위치] = [ ]

** 연속해서 삭제할 때는 뒤에것부터 삭제하던가 아니면 지울 때 인덱스를 1씩 감소하며 삭제해야함. 이유는 알겠지?

** 일정 간격이 있으면 5번 슬라이싱을 이용해도 됨.

 

4. 중간에 삽입

1) 변수명[위치:위치] = 데이터

*위치값은 같은 수를 넣어줘야 함.

 

5. 슬라이싱

변수명[시작위치 : 종료위치 : 간격]

*값이 없을경우 시작위치는 0, 종료위치는 마지막위치, 간격은 1로 간주함.

ex) 1~4번째  [1:5:1]

ex) 0~3번째  [0:4:1]

ex) 짝수번째 [ : : 2]

 

6. for-each( = fast enumeration)

for 임시변수 in list변수명 : 내용

 

 

* len(변수) : 포함된 데이터 갯수 리턴

** len 메서드를 사용해 for문을 돌리게 된다면 좋지않다. 왜냐하면 메서드를 for문의 조건만큼 호출하기 때문에 다른 데이터 영역(메서드가 있는 영역- 변하지 않는 영역..)에 그만큼 가야 하기 때문이다. 이때에는 for-each문을 사용해주는것이 훨씬 좋다.

 

7. List 메소드

-append(값) : 마지막에 데이터 추가

-insert(인덱스,데이터) : 인덱스 위치에 데이터 삽입(데이터가 밀려나므로 데이터가 많을 시 많은 시간 소요)

-index(데이터) : 데이터의 위치 검색

-count() : 요소의 개수 리턴

-sort() : 리스트를 정렬 .....

*sort(reverse=True) : 역순으로 정렬

*sort(key=함수이름) : 함수를 수행한 결과를 가지고 정렬(직접적인 데이터 변화는 없다)

ex)list.sort(key=str.lower) : 리스트 데이터를 소문자로 변환 후 정렬한다. (실제 데이터는 소문자로 바뀌지 않는다)

-reverse() : 순서 뒤집기

-remove(데이터) : 데이터의 첫번째 것을 삭제

-pop(인덱스) :데이터를 삭제하고 꺼내옴

-extend(리스트) : 리스트를 추가

 

 

 

 

Stack_리스트는 스택으로 사용할 수 있게 설계되었다

 

- LIFO구조(Last in First out)의 메모리

- 데이터를 삽입하는 연산을 push, 꺼내는 것을 pop이라고 함.

- push연산은 append()를 pop연산은 pop()메소드를 이용하면 된다.

 

 

 

Queue_큐 역시 리스트로 구현할 수 있다

 

- FIFO구조(First in First out)의 메모리

- 데이터 삽입 연산은 append(데이터) 꺼내는 연산은 pop(0)을 이용한다.

 

 

 

 

Tuble_변경되지 않는 데이터의 연속적인 모임(변경되지 않는 List)

 

* 따로 공부하지 않아도 되는데, 생성같은것만 제외하면 List와 같다.

 

1. 생성

변수명 = (데이터나열)

 

 

 

 

---

짤막하게 파이썬 함수 선언방법

 

def 함수명(매개변수) :

return len(s)

 

 

반응형