51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
|
---
|
|||
|
title: Itertools
|
|||
|
localeTitle: Itertools
|
|||
|
---
|
|||
|
Itertools是一个函数的python模块,它返回生成器,只在迭代时才起作用的对象。 itertool函数的一些示例包括但不限于:chain(),imap(),product()和compress()。
|
|||
|
|
|||
|
### 链()
|
|||
|
|
|||
|
chain()函数将几个迭代器作为参数,并返回一个迭代器,它生成所有这些迭代器的内容,就像它们来自一个序列一样。
|
|||
|
|
|||
|
```py
|
|||
|
import itertools
|
|||
|
list(itertools.chain([1, 2], [3, 4]))
|
|||
|
|
|||
|
# Output
|
|||
|
# [1, 2, 3, 4]
|
|||
|
```
|
|||
|
|
|||
|
### islice()
|
|||
|
|
|||
|
islice()函数返回一个迭代器,它通过索引从输入迭代器返回所选项。它采用与列表的切片运算符相同的参数:start,stop和step。启动和停止是可选的。
|
|||
|
|
|||
|
```py
|
|||
|
import itertools
|
|||
|
list(itertools.islice(count(), 5))
|
|||
|
|
|||
|
# Output
|
|||
|
# [0,1, 2, 3, 4]
|
|||
|
```
|
|||
|
|
|||
|
### izip()
|
|||
|
|
|||
|
izip()返回一个迭代器,它将几个迭代器的元素组合成元组。它的工作方式类似于内置函数zip(),除了它返回迭代器而不是列表。
|
|||
|
|
|||
|
```py
|
|||
|
import itertools
|
|||
|
list(izip([1, 2, 3], ['a', 'b', 'c']))
|
|||
|
|
|||
|
# Output
|
|||
|
# [(1, 'a'),(2, 'b'),(3, 'c')]
|
|||
|
```
|
|||
|
|
|||
|
组合迭代器:
|
|||
|
|
|||
|
迭代器参数结果 product()p,q,... \[repeat = 1\]笛卡尔积,相当于嵌套的for循环 permutations()p \[,r\] r-length元组,所有可能的排序,没有重复的元素 组合()p,r r-length元组,按排序顺序,没有重复元素 _与_ replacement()p,r r-length元组的组合,按排序顺序,具有重复元素 产品('ABCD',重复= 2)AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD 排列('ABCD',2)AB AC AD BA BC BD CA CB CD DA DB DC
|
|||
|
|
|||
|
组合('ABCD',2)AB AC AD BC BD CD
|
|||
|
|
|||
|
_与_替换组合('ABCD',2)AA AB AC AD BB BC BD CC CD DD
|
|||
|
|
|||
|
来源:HTTPS://docs.python.org/3/library/itertools.html
|