# 병행성
# Generator ex1
def generator_ex1():
print('Start')
yield 'A point'
print('Continue')
yield 'B Point'
print('End')
temp = iter(generator_ex1())
print(temp)
print(next(temp)) # A Point 까지
print(next(temp)) # B Point 까지
# print(next(temp)) # End 그리고 예외로 StopIteration
for v in generator_ex1():
pass
# print(v)
# Generator ex2
temp2 = [x * 3 for x in generator_ex1()] # ['A pointA pointA point', 'B PointB PointB Point']
temp3 = (x * 3 for x in generator_ex1()) # <generator object <genexpr> at 0x000002E911D61970>
print(temp2)
print(temp3) # 제너레이터형만 남기에..
for i in temp3:
print(i)
튜플로 보통 처리하는 소괄호는 여기서 제너레이터 형만 나온다. 이 점은 전에 학습을 통해서 배운 부분이다. 내가 기억해야할 부분이다.
# 조건
gen2 = itertools.takewhile(lambda n : n < 1000, itertools.count(1, 2.5))
# for v in gen2:
# print(v)
# 필터의 반대
gen3 = itertools.filterfalse(lambda n : n < 3, [1,2,3,4,5])
# for v in gen3:
# print(v)
# 누적 합계
gen4 = itertools.accumulate([x for x in range(1, 101)]) # 1부터 100까지 더하는 값 누적 합계
# for v in gen4:
# print(v)
# 연결 1
gen5 = itertools.chain('ABCDE', range(1,11,2)) # ['A', 'B', 'C', 'D', 'E', 1, 3, 5, 7, 9]
print(list(gen5))
# 연결 2
gen6 = itertools.chain(enumerate('ABCDE')) # [(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E')]
print(list(gen6))
# 개별
gen7 = itertools.product('ABCDE') # [('A',), ('B',), ('C',), ('D',), ('E',)]
print(list(gen7))
# 연산 (경우의 수)
gen8 = itertools.product('ABCDE', repeat=2)
print(list(gen8))
# 그룹화
gen9 = itertools.groupby('AAABBCCCCDDEEEE')
# print(list(gen9))
for chr, group in gen9:
print(chr, ' : ', list(group))
그룹화랑 연산은 좋다.