반응형
자동화를 위한 Python 공부 4일차
시퀀스 자료형 - list
tuple과 굉장히 비슷하다 코드로 확인해보면
list = [1, 2, 3, 4, 5] # tuple -> () , list -> []
a = []
b = [1, 2, 3]
c = ['Life', 'is', 'too', 'short']
d = [1, 2, 'Life', 'is']
e = [1, 2, ['Life', 'is']]
- indexing
# indexing
list1 = [1,2,3]
print('indexing 1 : ',list1)
print('indexing 2 : ',list1[2])
print('indexing 3 : ',list1[-1])
print('indexing 4 : ',list1*3) #반복하여 출력
list2 = ['a','b',list1]
print('indexing 5 : ',list2)
list3 = [1,2,[3,4,5]]
print('indexing 6 : ',list3[2][2]) #list2는 이런식으로 인덱싱 할 수 없다
결과
indexing 1 : [1, 2, 3]
indexing 2 : 3
indexing 3 : 3
indexing 4 : [1, 2, 3, 1, 2, 3, 1, 2, 3]
indexing 5 : ['a', 'b', [1, 2, 3]]
indexing 6 : 5
- slicing
#slicing
list1 = [1,2,3]
list1[0:2] # index 0 에서부터 2개만 출력
a = list1[:2]
b = list1[2:]
print(a)
print(b)
결과
[1, 2]
[3]
- list 의 길이구하기
# 리스트 길이구하기
len(list1)
결과
3
list 의 여러가지 메서드들
1. append & sort
#list 의 수정과 삭제
list = [1]
list.append(4)
list.append(2)
list.append(0)
print(list)
list.sort() #정렬
print(list)
del list[3] #index
print(list)
list.reverse()
list
결과
[1, 4, 2, 0]
[0, 1, 2, 4]
[0, 1, 2]
[2, 1, 0]
2. index
#index , 위치를 반환
list = [4,5,2,3,6,7,1]
list.index(6)
결과
4
3. remove
#요소를 삽입 & 제거
list = [4,3,2,1,1,2,3,4]
list.insert(4,0) # index 4 자리에 있는 원소를 오른쪽으로 밀어내고 들어간다.
print(list)
list.remove(4) # 4라는 요소 자체를 지워버린다 , 순서대로 삭제한다.
print(list)
del list[4] # 4번째 index 요소를 제거
list
결과
[4, 3, 2, 1, 0, 1, 2, 3, 4]
[3, 2, 1, 0, 1, 2, 3, 4]
[3, 2, 1, 0, 2, 3, 4]
4. count
#요소의 개수 세기
list = [4,3,2,1,1,2,3,4]
list.count(4) #4라는 요소는 2개이다.
결과
2
5. extend
#list의 확장
list = [1,2]
list.extend([3,4,5])
list
결과
[1, 2, 3, 4, 5]
list로 stack을 구현해보자
stack이란 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다. 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 된다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO 구조라고 한다.
파이썬에서는 이러한 stack을 list로 구현할 수 있는데 다음 코드를 살펴보자
stack = []
# stack에 데이터 추가( push )
data = 'python'
print( f'data : {data} , {type(data)}\n' )
i=0
for value in data:
print(i , value)
i+=1
stack.append( value ) # stack에 데이터 추가
print( f'stack : {stack}\n' )
reverse_data = []
for _ in range( len( stack ) ):
# stack에서 데이터 삭제( pop )
reverse_data.append( stack.pop() )
print( f'reverse data : {reverse_data}' )
print( f'stack : {stack}\n' )
>>>
data : python , <class 'str'>
0 p
1 y
2 t
3 h
4 o
5 n
stack : ['p', 'y', 't', 'h', 'o', 'n']
reverse data : ['n', 'o', 'h', 't', 'y', 'p']
stack : []
list로 queue를 구현해보자
큐(queue)는 컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식을 말한다. 영어 단어 queue는 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 된다.
나중에 집어 넣은 데이터가 먼저 나오는 스택과는 반대되는 개념이다.
queue = []
# queue에 데이터 입력( put )
queue.insert( 0, 10 )
queue.insert( 0, 20 )
queue.insert( 0, 30 )
print( f'queue : {queue}\n' )
# queue에서 데이터 삭제( get )
for _ in range( len( queue ) ):
print( f'data : {queue.pop()} ')
print( f'queue : {queue}\n' )
>>>
queue : [30, 20, 10]
data : 10
data : 20
data : 30
queue : []
list VS tuple
tuple의 내용 변경 불가
list는 변경이 가능하다.
'Python & Automation' 카테고리의 다른 글
Python Study - day 6 (0) | 2022.02.01 |
---|---|
Python Strudy - day 5 (0) | 2022.01.31 |
Python Study - day 3 (0) | 2022.01.27 |
Python study - day 2 (0) | 2022.01.26 |
Python study - day 1 (0) | 2022.01.25 |