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 |