#18-파이썬 기초 실습 - 리스트(List) - 7
2020. 1. 29. 07:52ㆍAI & BigData/Python Basics
파이썬 기초 실습 - 리스트(List) - 7¶
1. 리스트의 자료구조 활용¶
- 스택 구조
- 스택 데이터 구조는 제일 마지막에 넣은 데이터부터 순서대로 꺼내는 Last In First Out(LIFO, 후입선출) 구조이다.
- append -> pop()을 이용하면 맨 뒤에 데이터를 넣고 맨 뒤의 데이터를 꺼낼 수 있는 스택의 LIFO 구조가 된다.
In [1]:
stack = ['A', 'B', 'C', 'D', 'E', 'F']
stack.append('G') # 맨 뒤에 데이터를 추가한다.
stack # G 가 맨 뒤에 추가된 것을 알 수 있다.
Out[1]:
['A', 'B', 'C', 'D', 'E', 'F', 'G']
In [2]:
lifo_data = stack.pop() # 맨뒤에 값 G가 lifo_data에 추가 되고 삭제가 된다.
stack # ['A', 'B', 'C', 'D', 'E', 'F']
Out[2]:
['A', 'B', 'C', 'D', 'E', 'F']
In [3]:
lifo_data
Out[3]:
'G'
2. 큐 구조¶
- 큐 데이터 저장 구조는 들어오는 순서대로 데이터를 꺼낼 수 있는 First In First Out(FIFO, 선입선출)구조이다.
- append -> pop(0)을 이용하여 큐 데이터 저장 구조로 사용할 수 있다.
In [4]:
queue = ['A', 'B', 'C', 'D', 'E', 'F']
queue.append('G') # 뒤에 데이터를 추가한다.
queue # [10, 20, 30, 40, 50, 60]
Out[4]:
['A', 'B', 'C', 'D', 'E', 'F', 'G']
In [5]:
fifo_data = queue.pop(0) # 0번 인덱스의 값을 출력하고 Garbage Collection에 반환한다.
queue # ['B', 'C', 'D', 'E', 'F', 'G'] # 반복을 하면. 값이 깨속 꺼내다가 값이 없으면 에러를 반환
Out[5]:
['B', 'C', 'D', 'E', 'F', 'G']
In [6]:
fifo_data
Out[6]:
'A'
3. 리스트의 정렬¶
- 반환하지 않는 리스트 순서 정렬
In [7]:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a)
print('--'* 20)
a.sort() # .sort() 메서드를 사용하면 a를 눌러야 바뀐 내용을 확인 할 수 있다.
print(a)
print('--'* 20)
b = [1, 6, 3, 8, 6, 2, 9]
print(b)
print('--'* 20)
sorted(b) # [1, 2, 3, 6, 6, 8, 9]. sorted() 내장 함수를 이용하면 입력하는 순간 출력도 된다.
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
----------------------------------------
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
----------------------------------------
[1, 6, 3, 8, 6, 2, 9]
----------------------------------------
Out[7]:
[1, 2, 3, 6, 6, 8, 9]
4. 오름차순과 내림차순 정렬.¶
- reverse가 True 내림차순 False면 오름차순. 기본은 F
In [8]:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
a.sort(reverse=False) # 오름차순으로 정렬한다.
a # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Out[8]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [9]:
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
b.sort(reverse=True) # 내림차순으로 정렬한다.
b # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Out[9]:
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
5. 내장 메서드의 key 속성을 통한 리스트 정렬¶
In [10]:
a = ['123', '45', '67', '8901']
a.sort(key=int) # String(문자열)인 값을 int로 형변환을 하고 크기 순서대로 정렬한다
a # ['45', '67', '123', '8901']. int로 바꿨을 때 크기 순서대로 정렬된 것을 확인.
Out[10]:
['45', '67', '123', '8901']
In [11]:
b = ['10', '20', '15', '25', '225', '335', '44']
b.sort(key = str) # String값을 String 순서대로 정렬한다.
b # ['10', '15', '20', '225', '25', '335', '44'] String 순서대로 정렬된 것을 확인.
Out[11]:
['10', '15', '20', '225', '25', '335', '44']
6. 반환하지 않는 리스트의 역순 정렬, 반환하는 리스트의 역순 정렬.¶
In [12]:
a = [1, 2, 3, 9, 8, 7, 6]
a.reverse() # .reverse() 메서드를 사용하면 a를 출력하면 반전된것을 확인가능
a # [6, 7, 8, 9, 3, 2, 1]
Out[12]:
[6, 7, 8, 9, 3, 2, 1]
In [13]:
b = [1, 2, 3, 9, 8, 7, 6]
reversed(b) # <list_reverseiterator at 0x10f0746f1c8> == sorted()와 다르게 주소값 출력.
Out[13]:
<list_reverseiterator at 0x209607213c8>
In [14]:
list(reversed(b)) # [6, 7, 8, 9, 3, 2, 1]
Out[14]:
[6, 7, 8, 9, 3, 2, 1]
7. 리스트 for 문¶
- 리스트 내에서 포(for) 문 사용 형식
- [표현식 for 항목 in 컨테이너 객체[개장함수] if 조건문]
In [15]:
list_for = [] # 리스트형 변수 선언
for i in range(10): # 0 ~ 9 까지 증가 하는 for문 생성
list_for.append( i * i)
print(list_for)
# 결과 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 0 ~ 9 까지의 숫자를 계속 제곱한 값을 list_for 문에 삽입합니다.
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
In [16]:
list_for2 = [i * i for i in range(10)]
print(list_for2)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
In [17]:
list_for == list_for2
Out[17]:
True
In [18]:
# 결과는 위와 동일하지만.. 코드 실행 줄이 조금 줄어드는 효과가 있습니다.
8. 리스트 for 문 활용¶
In [19]:
list_for3 = []
for i in range(2,20,6):
for j in range(3,20,9):
if ( i + j ) % 5 == 0:
list_for3.append((i,j,i*j))
list_for3
Out[19]:
[(2, 3, 6), (8, 12, 96)]
In [20]:
list_for4 = [(i, j, i * j) for i in range(2, 20, 6) for j in range(3, 20, 9) if (i + j) % 5 == 0]
print(list_for4)
[(2, 3, 6), (8, 12, 96)]
In [21]:
list_for3 == list_for4
# list_for3 과 list_for4 의 값은 동일하다는 것을 알수 있습니다.
Out[21]:
True
9. 튜플 형태로 리스트에 저장¶
- 중첩 포문 사용
In [22]:
a = 'abc'
b = (1, 2, 3)
c = []
for x in a:
for y in b:
c.append((x,y))
print(c)
[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
In [23]:
a = 'abc'
for x in a:
print(x) # a,b,c 세번 반복 되는것을 확인 할수 있음.
a
b
c
In [24]:
a = 'abc'
b = (1, 2, 3)
c = []
[c.append((x, y)) for x in a for y in b]
print(c)
[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
10. 리스트 형태로 리스트에 저장¶
In [25]:
words = '파이썬이 좋아서 파이썬 공부를 시작했습니다. 기초부터 하나씩 배워서 훌륭한 사람이 되고 싶어요..'.split()
words_1 = []
for w in words:
words_1.append([w.upper(), w.lower(), len(w)])
print(words_1)
[['파이썬이', '파이썬이', 4], ['좋아서', '좋아서', 3], ['파이썬', '파이썬', 3], ['공부를', '공부를', 3], ['시작했습니다.', '시작했습니다.', 7], ['기초부터', '기초부터', 4], ['하나씩', '하나씩', 3], ['배워서', '배워서', 3], ['훌륭한', '훌륭한', 3], ['사람이', '사람이', 3], ['되고', '되고', 2], ['싶어요..', '싶어요..', 5]]
In [28]:
words = '파이썬이 좋아서 파이썬 공부를 시작했습니다. 기초부터 하나씩 배워서 훌륭한 사람이 되고 싶어요..'.split()
words_2 = [[w.upper(), w.lower(), len(w)] for w in words]
print(words_2)
[['파이썬이', '파이썬이', 4], ['좋아서', '좋아서', 3], ['파이썬', '파이썬', 3], ['공부를', '공부를', 3], ['시작했습니다.', '시작했습니다.', 7], ['기초부터', '기초부터', 4], ['하나씩', '하나씩', 3], ['배워서', '배워서', 3], ['훌륭한', '훌륭한', 3], ['사람이', '사람이', 3], ['되고', '되고', 2], ['싶어요..', '싶어요..', 5]]
In [29]:
words_1 == words_2
Out[29]:
True
In [ ]:
'AI & BigData > Python Basics' 카테고리의 다른 글
#20-파이썬 기초 실습 - 딕셔너리 Dictonary-1 (0) | 2020.01.31 |
---|---|
#19 - 파이썬 기초 실습 -Random Choice (0) | 2020.01.30 |
#17-파이썬 기초 실습 - 리스트(List)-6 (0) | 2020.01.28 |
#16-파이썬 기초 실습 - 리스트(List)-5 (0) | 2020.01.27 |
#15-파이썬 기초 실습 - 리스트(List)-4 (0) | 2020.01.26 |