import itertools
# chain
it = itertools.chain([1, 2, 3], [4, 5, 6])
print(list(it))
[1, 2, 3, 4, 5, 6]
# repeat
it = itertools.repeat('안녕', 3)
print(list(it))
['안녕', '안녕', '안녕']
# cycle
it = itertools.cycle([1, 2])
result = [next(it) for _ in range(10)]
print(result)
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
# tee
it1, it2, it3 = it = itertools.tee(['하나', '둘'], 3)
print(list(it1))
print(list(it2))
print(list(it3))
['하나', '둘'] ['하나', '둘'] ['하나', '둘']
# zip_longest
keys = ['하나', '둘', '셋']
values = [1, 2]
normal = list(zip(keys, values))
print('zip:', normal)
it = it = itertools.zip_longest(keys, values, fillvalue='없음')
longest = list(it)
print('zip_longest:', longest)
zip: [('하나', 1), ('둘', 2)] zip_longest: [('하나', 1), ('둘', 2), ('셋', '없음')]
# isslice
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
first_five = itertools.islice(values, 5)
print('앞에서 다섯개:', list(first_five))
middle_odds = itertools.islice(values, 2, 8, 2)
print('중간의 홀수들', list(middle_odds))
앞에서 다섯개: [1, 2, 3, 4, 5] 중간의 홀수들 [3, 5, 7]
# takewhile
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
less_then_seven = lambda x: x < 7
it = it = itertools.takewhile(less_then_seven, values)
print(list(it))
[1, 2, 3, 4, 5, 6]
# dropwhile
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
less_then_seven = lambda x: x < 7
it = itertools.dropwhile(less_then_seven, values)
print(list(it))
[7, 8, 9, 10]
# filterfalse
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
evens = lambda x: x % 2 == 0
filter_result = filter(evens, values)
print('filter:', list(filter_result))
filter_false_result = itertools.filterfalse(evens, values)
print('filter false:', list(filter_false_result))
filter: [2, 4, 6, 8, 10] filter false: [1, 3, 5, 7, 9]
# accumulate
values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sum_reduce = itertools.accumulate(values)
print('합계:', list(sum_reduce))
def sum_modulo_20(first, second):
output = first + second
return output % 20
modulo_reduce = itertools.accumulate(values, sum_modulo_20)
print('20으로 나눈 나머지의 합계:', list(modulo_reduce))
합계: [1, 3, 6, 10, 15, 21, 28, 36, 45, 55] 20으로 나눈 나머지의 합계: [1, 3, 6, 10, 15, 1, 8, 16, 5, 15]
# product
single = itertools.product([1, 2], repeat=2)
print('리스트 한 개:', list(single))
multiple = itertools.product([1, 2], ['a', 'b'])
print('리스트 두 개:', list(multiple))
리스트 한 개: [(1, 1), (1, 2), (2, 1), (2, 2)] 리스트 두 개: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
# permutations
it = itertools.permutations([1, 2, 3, 4], 2)
print(list(it))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
# combinations
it = itertools.combinations([1, 2, 3, 4], 2)
print(list(it))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
# combinations_with_replacement
it = itertools.combinations_with_replacement([1, 2, 3, 4], 2)
print(list(it))
[(1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (4, 4)]