4일차와 이어지는 리스트에 대한 내용정리.

스택과 큐, 튜플에 대한 내용도 있다.




============================= Python =============================

### 리스트의 내장 메서드

# append. 리스트의 맨 뒤에 데이터를 추가한다. 중간에 원하는 인덱스로 추가하고 싶으면 (객체)[(인덱스):(인덱스)]로 하자.

a = [1, 2, 3]

a.append(4)  # 뒤에 데이터를 추가한다.

a  # [1,2,3,4]. 뒤에 데이터를 추가됐다.

a.append([4, 5])  # 뒤에 리스트를 추가한다.

a  # [1, 2, 3, 4, [4, 5]]. 리스트로 추가되었다.


# index. 내가 궁금한 값이 어느 인덱스에 있는지 알려주는 내장 메서드. (객체).index(데이터) -> (데이터의 인덱스) 형태이다.

a = [1, 2, 3]

a.index(3)  # 데이터 3이 어느 인덱스에 있는지 반환. 결과는 2.


# insert. append와 다른 점은 중복된 값은 들어가지는 않는 점, 최소 2개의 값이어야 한다는 점, int값만 가능하다는 점이다.

a = [1, 2, 3]

a.insert(3, 4)  # 뒤에 3,4를 추가

a  # [1,2,3,4]. 중복된 값이 들어가지 않았다.

a.insert(5)  # 한 개라서 안 들어간다. TypeError: insert() takes exactly 2 arguments (1 given)

a.insert([4], [5])  # 아쉽게도 리스트는 안 들어간다.  TypeError: 'list' object cannot be interpreted as an integer

s = ['a', 's', 'd', 'f']

a.insert('a', 'g')  # int값만 추가 가능하다. TypeError: 'str' object cannot be interpreted as an integer


# count. 동일한 데이터가 몇 개 들어가있는 세어주는 메서드.

a = [1, 2, 3, 3, 4]

a.count(1)  # 1이 한 개 있으므로 1.

a.count(3)  # 3이 두 개 있으므로 2.

a.count(100)  # 100은 없으므로 0

s = ['a', 's', 's', 'd', 'f']

s.count('s')  # String도 정상적으로 세어진다. 결과는 2.


# reverse. 자료의 인덱스를 거꾸로 바꿔 자료의 순서를 뒤집는다.

a = [1, 5, 8, 9, 1, 65, 4, 489, 6, 5]

a.reverse()

a  # [5, 6, 489, 4, 65, 1, 9, 8, 5, 1]


# sort. 리스트 안의 원소들을 크기순서로 정렬한다. (객체).sort(reverse=) reverse가 True 내림차순 False면 오름차순. 기본은 F

a = [1, 5, 8, 9, 1, 65, 4, 489, 6, 5]

a.sort()

a  # [1, 1, 4, 5, 5, 6, 8, 9, 65, 489]

a.sort(reverse=True)

a  # [489, 65, 9, 8, 6, 5, 5, 4, 1, 1]


# remove. 지우고 싶은 데이터를 넣으면 삭제된다. 중복된 데이터가 있으면 인덱스가 낮은 것만 삭제한다. 즉, 하나의 데이터만 삭제.

s = [10, 20, 20, 30, 40, 50]

s.remove(20)  # 지우고 싶은 데이터는 20. 인덱스를 이용해 지우고 싶으면 ''del s[(인덱스)]'' 이런 식으로 쓰면 된다.

s  # [10, 20, 30, 40, 50]. 20 하나만 지워졌다.


# extend. 리스트를 이용해서 데이터를 추가한다. append와 다른 점은 삽입되는 리스트가 각 요소로 들어간다는 점이다.

s = [10, 20, 30, 40, 50]

s.extend([60,70])  # 들어가면 이 리스트가 하나의 인덱스가 아닌 리스트가 분해되어 두 개의 인덱스로 추가가 될 것이다.

s  # [10, 20, 30, 40, 50, 60, 70]. 리스트로 들어간 것이 아닌 요소로 들어간 것을 확인.


# pop. 값을 추출하고 Garbage Collection으로 반환한다. 인덱스를 이용하여 원하는 인덱스의 값을 출력하고 반환할 수 있다.

a = [1, 2, 3]

a.pop()  # 기본은 인덱스가 가장 높은 값을 출력하고 반환한다. 결과는 3.

a  # [1, 2]. 없어진 것을 확인.

a.pop(0)  # 인덱스를 이용하면 원하는 인덱스의 값을 출력 및 반환할 수 있다.

a  # [2]. 없어진 것을 확인






### 리스트의 자료구조 활용

# 스택 구조

'''

1.스택 데이터 저장 구조는 제일 마지막에 넣은 데이터부터 순서대로 꺼내는 Last In First Out(LIFO, 후입선출)구조이다.

2.append -> pop()을 이용하면 맨 뒤에 데이터를 넣고 맨 뒤의 데이터를 꺼낼 수 있으니 스택 데이터 저장 구조가 된다.

'''

s = [10, 20, 30, 40, 50, 60]

s.append(70)  # 맨 뒤에 데이터를 추가한다.

s  # [10, 20, 30, 40, 50, 60, 70]. 뒤에 추가된 것을 알 수 있다.

s.pop()  # 맨 뒤의 값이 출력되고 Garbage Collection으로 반환된다. 결과는 70.

s  # [10, 20, 30, 40, 50, 60].


# 큐 구조

'''

1.큐 데이터 저장 구조는 들어오는 순서대로 데이터를 꺼낼 수 있는 First In First Out(FIFO, 선입선출)구조이다.

2.append -> pop(0)을 이용하여 큐 데이터 저장 구조로 사용할 수 있다.

3.게임 할 때 '큐(Queue)돌린다.'라는 내용과도 동일하다. 먼저 큐 돌린 사람(먼저 레디 한 사람)이 먼저 잡히는 구조니까.

'''

q = [10, 20, 30, 40, 50]

q.append(60)  # 뒤에 데이터를 추가한다.

q  # [10, 20, 30, 40, 50, 60]

q.pop(0)  # 0번 인덱스의 값을 출력하고 Garbage Collection에 반환한다. 결과는 10.

q  # [20, 30, 40, 50, 60].






### 리스트의 정렬

# 반환하지 않는 리스트 순서 정렬

a = [1, 6, 3, 8, 6, 2, 9]

a.sort()  # .sort() 메서드를 사용하면 a를 눌러야 바뀐 내용을 확인 할 수 있다.

a  # [1, 2, 3, 6, 6, 8, 9]

b = [1, 6, 3, 8, 6, 2, 9]

sorted(b)  # [1, 2, 3, 6, 6, 8, 9].     sorted() 내장 함수를 이용하면 입력하는 순간 출력도 된다.


# 오름차순과 내림차순 정렬. (객체).sort(reverse=) reverse가 True 내림차순 False면 오름차순. 기본은 F

a = [1, 6, 3, 8, 6, 2, 9]

a.sort(reverse=False)  # 오름차순으로 정렬한다.

a  # [1, 2, 3, 6, 6, 8, 9]

b = [1, 6, 3, 8, 6, 2, 9]

b.sort(reverse=True)  # 내림차순으로 정렬한다.

b  # [9, 8, 6, 6, 3, 2, 1]


# 내장 메서드의 key 속성을 통한 리스트 정렬

a = ['123', '34', '56', '2345']

a.sort(key=int)  # String인 값을 int로 바꿨을 때 크기 순서대로 정렬한다는 뜻이다.

a  # ['34', '56', '123', '2345']. int로 바꿨을 때 크기 순서대로 정렬된 것을 확인.

b = ['123', '34', '56', '2345']

b.sort(key = str)  # String값을 String 순서대로 정렬한다.

b  # ['123', '2345', '34', '56']. String 순서대로 정렬된 것을 확인.


#반환하지 않는 리스트의 역순 정렬, 반환하는 리스트의 역순 정렬.

a = [1, 6, 3, 8, 6, 2, 9]

a.reverse()  # .reverse() 메서드를 사용하면 a를 눌러야 바뀐 내용을 확인 할 수 있다.

a  # [9, 2, 6, 8, 3, 6, 1]

b = [1, 6, 3, 8, 6, 2, 9]

reversed(b)  # <list_reverseiterator object at 0x000000458D78F630>. sorted()와 다르게 주소값만 출력된다.

list(reversed(b))  # [9, 2, 6, 8, 3, 6, 1]






##### 튜플

'''

대부분의 내용이 리스트와 동일하고 사용할 수 있는 내장 메서드만 다르다.

'''

### 튜플의 내장 메서드

# index(). 내가 궁금한 값이 어느 인덱스에 있는지 알려주는 내장 메서드. (객체).index(데이터) -> (데이터의 인덱스) 형태이다.

a = (1, 2, 3, 4, 5)

a.index(3)  # 3이라는 데이터가 어느 인덱스를 가지고 있는지 보여준다. 결과는 2.


# count(). 동일한 데이터가 몇 개 들어가있는 세어주는 메서드.

a=(1, 2, 2, 2, 3, 4)

a.count(2)  # 2라는 데이터의 갯수를 세어준다. 결과는 3.

a.count(100)  # 100이라는 데이터의 갯수를 세어준다. 결과는 0.


============================= Python =============================

'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글

[Python] Python 6일차  (0) 2018.05.17
[R] R 6일차  (0) 2018.05.17
[Python] Python 4일차 - 2  (0) 2018.05.16
[R] R 5일차  (0) 2018.05.16
[Python] Python 4일차 - 1  (0) 2018.05.15

+ Recent posts