每次写python都是各种查资料,之前搜过的东西脑子里大致有个印象,但是又写不出来qaq,所以记录一下每天学会的函数什么的…(具体描述和例子非原创)
itertools
combinations()
combinations(iterable,r);
创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序
for i in combinations([1, 2, 3], 2):
print i
--------------------------------
(1, 2)
(1, 3)
(2, 3)
combinations_with_replacement()
for i in combinations_with_replacement([1, 2, 3], 2):
print i
-----------------------------------------------------
(1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3)
chain()
使用形式:
chain(iterable1, iterable2, iterable3, ...)
chain 接收多个可迭代对象作为参数,将它们『连接』起来,作为一个新的迭代器返回。
>>> from itertools import chain
>>>
>>> for item in chain([1, 2, 3], ['a', 'b', 'c']):
... print item
...
1
2
3
a
b
c
还可以这样
letters = ['a', 'b', 'c', 'd', 'e', 'f']
booleans = [1, 0, 1, 0, 0, 1]
print(list(itertools.chain(letters,booleans)))
# ['a', 'b', 'c', 'd', 'e', 'f', 1, 0, 1, 0, 0, 1]
print(tuple(itertools.chain(letters,letters[3:])))
# ('a', 'b', 'c', 'd', 'e', 'f', 'd', 'e', 'f')
print(set(itertools.chain(letters,letters[3:])))
# {'a', 'd', 'b', 'e', 'c', 'f'}
print(list(itertools.chain(letters,letters[3:])))
# ['a', 'b', 'c', 'd', 'e', 'f', 'd', 'e', 'f']
chain.from_iterable()
接收一个可迭代对象作为参数,返回一个迭代器
>>> string = chain.from_iterable('ABCD')
>>> string.next()
'A'
之前使用过
list(chain.from_iterable(list of a list))
把 list of a list 铺平,变成一个 list
参考:
- python itertools功能详解
- 高效的 itertools 模块