오늘도 역시나 이제껏 경험해보지 못한 재미있는 세계를 경험하고 왔다.
그것은 바로 시퀀스!!!!!
시퀀스! 영어로 연속을 의미한다. 그것은 즉 순서가 있음을 의미하고 우리가 배운 것들 중 시퀀스는 어떠한 것들이 있을까?? 대표적으로 리스트 튜플이 있다.
우선 시퀀스에 들어가기 이전에 자료형을 간단히 분류해보자.
A. 컨테이너 vs 플랫
컨테이너 자료형이란 서로 다른 자료형을 함께 저장할 수 있는 자료형을 의미한다.
예를 들어 리스트! 우리는 리스트 안에 퓨플과 딕 타입등의 자료형을 넣을 수 있다.
대표적으로 list, tuple, colletions, deque가 있다.
이와 반대로 플랫형의 경우 1가지 타입의 자료형만 저장할 수 잇는 자료형을 의미한다.
대표적으로 str, bytes, bytearray, array가 있다.
지능형리스트 vs 비지능형리스트
(1) 비지능형리스트
char = 'k@)~?/#$'
non_intel = []
for i in char :
char.append(ord(i))
(2) 지능형리스트
intel = [[ord(i)] for i in char]
앞선 시간에 배운 namedtuple을 활용할 때 이와 유사한 방식으로 namedtuple을 만들었음
예를 들어
student = namedtuple('student', 'class, num')
sort_class = [student(class, num) for class in 'A B C D'.split() for num in [for i in range(1,21)]]
# Comprehending Lists + Map, Filter
지능형리스트와 map그리고 filter함수를 동시에 사용해보기 이전에
기본적으로 지금 작업에 쓰이는 map,filter함수에 대해서 알 필요가 있다.
우리가 만약에 아래와 같은 리스트형을 만들었다고 하자.
my_num = [1,2,3,4,5,6,7,8]
여기서 우리가 4를 초과하는 즉 5이상의 숫자만 보고싶다면? 어떻게 할까???
def over(x) :
if x >= 5 :
return true
else :
return false
for i in filter(over, my_num) :
print(i)
여기서 출력되는 숫자는 5 6 7 8이다.
그리고 map함수를 이용할 경우는
for i in map(over,my_num) :
print(i)
여기서 출력되는 것은 True와 False이다.
여기서 알 수 있는 것은 filter는 True값만 받아서 그 내용을 보여주는 것이고.
map은 인자에 사용된 함수의 결과값을 그대로 나타내준다.
필요한 것들을 알아보았으니 본격적으로 시작하겟다.
char = '!><(?/)#$%'
code_list = list(filter(lambda x : x > 40, map(ord, chars)))