美文网首页
itertools的几个用法

itertools的几个用法

作者: realnickman | 来源:发表于2019-03-22 22:16 被阅读0次

itertools是个非常有用的处理iterables的module, 关键是非常的高效(of course using generators!)。 这里简单罗列几个常见的用法,详细的用法可以参见https://docs.python.org/3/library/itertools.html#itertools.permutations

import itertools

# 3 infinite iterators 

counter = itertools.count(10,2) # 2 as step, 1 as default like (10,11,12,13,14....)
for p in counter:
    if p < 20:
        print(p)
    else:
        break

cs = itertools.cycle(["chalmers","kth","UU"])
n = 0
for c in cs:

    if n<6:
        print(c)
        n = n+1
    else:
        break

ns = itertools.repeat('A', 5)
for n in ns:
    print(n)

# takewhile(predicate, iterable)
# This iterator is opposite of dropwhile(), it prints the values till the function returns false for 1st time.
xs = itertools.takewhile(lambda x: (x< 6), [1,2,3,4,5,6,7,8,9])
for x in xs:
    print("using takingwhile:", x)

# groupby
gb = itertools.groupby(["abc","abc","cth","cth","cth","kth","KTH"], lambda c: c.upper())
for x,group in gb:
    print(x,":", list(group))

# permutations and chain:
for i in itertools.permutations(["3435","magic","!","@"]): # 所有的组合可能
    s = ""
    print(i)
    for z in itertools.chain(i):
        s = s+z
    print("possible combinations:",s)

输出:

10
12
14
16
18
chalmers
kth
UU
chalmers
kth
UU
A
A
A
A
A
using takingwhile: 1
using takingwhile: 2
using takingwhile: 3
using takingwhile: 4
using takingwhile: 5
ABC : ['abc', 'abc']
CTH : ['cth', 'cth', 'cth']
KTH : ['kth', 'KTH']
('3435', 'magic', '!', '@')
possible combinations: 3435magic!@
('3435', 'magic', '@', '!')
possible combinations: 3435magic@!
('3435', '!', 'magic', '@')
possible combinations: 3435!magic@
('3435', '!', '@', 'magic')
possible combinations: 3435!@magic
('3435', '@', 'magic', '!')
possible combinations: 3435@magic!
('3435', '@', '!', 'magic')
possible combinations: 3435@!magic
('magic', '3435', '!', '@')
possible combinations: magic3435!@
('magic', '3435', '@', '!')
possible combinations: magic3435@!
('magic', '!', '3435', '@')
possible combinations: magic!3435@
('magic', '!', '@', '3435')
possible combinations: magic!@3435
('magic', '@', '3435', '!')
possible combinations: magic@3435!
('magic', '@', '!', '3435')
possible combinations: magic@!3435
('!', '3435', 'magic', '@')
possible combinations: !3435magic@
('!', '3435', '@', 'magic')
possible combinations: !3435@magic
('!', 'magic', '3435', '@')
possible combinations: !magic3435@
('!', 'magic', '@', '3435')
possible combinations: !magic@3435
('!', '@', '3435', 'magic')
possible combinations: !@3435magic
('!', '@', 'magic', '3435')
possible combinations: !@magic3435
('@', '3435', 'magic', '!')
possible combinations: @3435magic!
('@', '3435', '!', 'magic')
possible combinations: @3435!magic
('@', 'magic', '3435', '!')
possible combinations: @magic3435!
('@', 'magic', '!', '3435')
possible combinations: @magic!3435
('@', '!', '3435', 'magic')
possible combinations: @!3435magic
('@', '!', 'magic', '3435')
possible combinations: @!magic3435

相关文章

网友评论

      本文标题:itertools的几个用法

      本文链接:https://www.haomeiwen.com/subject/ozudvqtx.html