본문 바로가기
지식공학/Python

python 독학 기본편 #4 Type (feat.트와이스 도와줘요)

by Eric87 2020. 10. 11.
반응형

이번 포스트에서는 python에서 인식하는 유형(type)에 대해서 이야기하겠습니다. 각 type별로 차이가 있기 때문에 잘 구분하면 나중에 해당 type의 특징을 이용할 수가 있습니다. 먼저 list에 대해서 알아보겠습니다. 리스트는 순서를 가지고 있는 집합이라고 생각하면 되겠습니다. 예제를 들어서 알아보도록 하죠. 트와이스 멤버가 순서대로 줄을 서는 것을 생각해 보죠. 나연, 정연, 모모 세 명이 줄을 서고 있습니다. 그럼 대괄호([ ])를 이용해서 나열을 하면 됩니다.

twice= ["나연","정연","모모"]

이렇게요. 잠깐의 복습으로 이때 모모가 몇 번로 줄을 서고 있는 알기 위해서는 앞 포스팅에서 했던 index를 활용하면 됩니다. print(twice.index("모모")) 이런 식으로 하면 되겠죠? 모르시면 이전 포스팅 공부하고 오세요. 이 리스트에 트와이스 멤버를 추가해보겠습니다. 사나를 추가해 보죠. append()를 이용하면 list 마지막에 추가를 시킬 수가 있고 중간에 멤버를 추가하고 싶으면 insert()를 사용하면 됩니다. 중간에 추가시키려면 넣고자 하는 위치 번호를 입력해주어야 합니다.

#사나를 추가
twice.append("사나")
print(twice)
# 다현을 나연/ 정연 사이에 끼움
twice.insert(1,"다연")

이번에 한 명씩 빼보겠습니다. pop()이라는 명령어를 입력하면 뒤에서부터 제거하게 됩니다. 또 리스트는 중복이 허용되므로 같은 원소에 대해서 나열할 수 있고 count() 명령어를 이용해서 같은 원소가 몇 개가 있는지 셀 수 있습니다.

print(twice.pop())
print(twice)
print(twice.pop())
print(twice)
print(twice.pop())
print(twice)
twice.append("나연")
print(twice)
print(twice.count("나연"))

리스트는 순서가 있으므로 숫자일 경우 오름차순, 내림차순으로 정렬도 가능합니다. sort()를 이용하면 기본적으로 작은 것부터 큰 순서대로 정렬이 되고 reverse()를 사용하면 반대가 됩니다. 또 두 리스트를 통합할 수도 있습니다. 앞 예제의 트와이스와 숫자 리스트의 통합은 extend()를 사용하면 됩니다.

num=[5,7,4,2,6,8,0,9,3,1]
num.sort()
print(num)
num.reverse()
print(num)
num.clear()
twice.extend(num)
print(twice)

다음은 세트(set)입니다. 세트는 중괄호({ })를 이용해서 표현할 수 있습니다. 리스트와 다르게 세트는 중복을 하지 않고 순서도 없습니다. 순서가 없으니 정렬을 할 수 없겠죠?

set ={1,3,3,3,2}
print(set)

이렇게 명령을 주면 출력은 {1,3,2}가 나옵니다. 세트는 수학에서 집합과 동일하다고 생각하면 됩니다. 그래서 집합 연산이 가능하죠. 만약에 집합 A={x|x는 36의 약수}={1,2,3,4,6,9,12,18,36}, B={x|x는 40의 약수}={1,2,4,5,8,10,20,40}를 선언을 하고 교집합과 합집합을 구해보겠습니다. 교집합은 intersection, 간단히 기호로 &, 합집합은 union, |로 표현합니다.

A={1,2,3,4,6,9,12,18,36}
B={1,2,4,5,8,10,20,40}
print(A&B)
print(A.intersection(B))
print(A|B)
print(A.union(B))

차집합도 가능합니다. difference 명령을 주면 되고 간단히 -를 사용해서 집합끼리 빼면 됩니다. 리스트와 마찬가지로 원소를 추가하거나 제외할 수도 있습니다.

A.add(0)
print(A)
A.remove(1)
print(A)

마지막 type은 튜플입니다. 튜플은 소괄호( )를 이용해서 표현할 수 있습니다. 위의 두 타입(list, set)과 다르게 입력된 내용을 변경하거나 추가를 할 수 없이 고정이 됩니다. 하지만 리스트나 세트보다 연산속도가 빠른 장점이 있습니다.

menu =("돈까스","치즈까스")
print(menu[0])
print(menu[1])
menu.add("생선까스")

이렇게 위치를 출력할 수 있지만 add를 사용해서 출력을 하면 오류가 발생합니다.

지금까지 배운 세 가지 타입을 변경할 수 있어요 예를 들어 menu라는 집합을 set의 기호인 중괄호 { }로 묶어서 선언을 해주면 python은 이를 set로 인식을 합니다. 이것을 list로 변경을 할 수 있고 tuple로도 변경을 할 수 있습니다.

menu={"커피","우유","주스"}
print(menu, type(menu))
menu=list(menu)
print(menu, type(menu))
menu=tuple(menu)
print(menu, type(menu))

결과를 보면 출력에서 type이 명시되고 묶음 기호가 대괄호, 중괄호, 소괄호로 구분이 되는 것을 확인할 수 있습니다. 자료구조별로 차이점과 특징을 알겠죠? 이번 포스트는 여기까지 하겠습니다.

반응형

댓글