itertools
import itertools
一旦导入了itertools模块,我们就可以使用其中的函数和迭代器了。
itertools模块中的一些函数返回的是无限迭代器,即可以无限次地生成迭代值。
count
count函数可以生成从指定起始数字开始的无限整数序列。它的使用方式如下所示:
import itertools for i in itertools.count(10, 2): if i > 20: break print(i)
执行上述代码的输出结果是:
10 12 14 16 18 20
在这个例子中,我们使用count(10, 2)来生成从10开始的无限整数序列。每次迭代,数字会递增2,直到大于20时终止迭代。
count(10, 2)
cycle
cycle函数可以无限次地循环一个可迭代对象。它接受一个可迭代对象作为参数,并不断地重复生成其中的元素。
import itertools count = 0 for item in itertools.cycle('abcd'): if count > 10: break print(item) count += 1
a b c d a b c d a b c
在这个例子中,我们使用cycle('abcd')来无限次地循环生成包含字符'abcd'的字符串序列。在每次迭代中,会按顺序返回这些字符。
cycle('abcd')
'abcd'
repeat
repeat函数可以生成一个无限重复的元素。它接受一个元素和一个可选的次数参数,并以元素作为结果迭代器的元素。
import itertools for item in itertools.repeat('abc', 3): print(item)
abc abc abc
在这个例子中,我们使用repeat('abc', 3)生成一个无限重复的'abc'序列,并限定了重复次数为3次。
repeat('abc', 3)
'abc'
除了无限迭代器,itertools模块还提供了一些函数用于生成有限的迭代器。
islice
islice函数可以从指定序列中截取片段,生成一个迭代器。它接受一个可迭代对象、起始位置、终止位置和可选的步长参数。
下面是islice函数的一个例子:
import itertools numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for item in itertools.islice(numbers, 2, 8, 2): print(item)
3 5 7
在这个例子中,我们使用islice(numbers, 2, 8, 2)从列表numbers中截取了索引为2到索引为7的元素,步长为2。最终生成的迭代器包含了这个截取的片段。
islice(numbers, 2, 8, 2)
numbers
itertools模块中的一些函数用于对迭代器进行操作和处理。
chain
chain函数可以将多个可迭代对象串联起来,形成一个单一的迭代器。它接受多个可迭代对象作为参数,并将它们的元素依次返回。
下面是chain函数的一个例子:
import itertools nums1 = [1, 2, 3] nums2 = [4, 5, 6] nums3 = [7, 8, 9] for item in itertools.chain(nums1, nums2, nums3): print(item)
1 2 3 4 5 6 7 8 9
在这个例子中,我们使用chain(nums1, nums2, nums3)将三个列表串联起来,并将它们的所有元素依次返回。
chain(nums1, nums2, nums3)
compress
compress函数根据一个布尔值序列选择元素。它接受两个可迭代对象作为参数,第一个参数用于选择元素,第二个参数是待选择的元素序列。
下面是compress函数的一个例子:
import itertools data = [1, 2, 3, 4, 5, 6, 7] selector = [True, True, False, False, True, True, False] for item in itertools.compress(data, selector): print(item)
1 2 5 6
在这个例子中,我们使用compress(data, selector)根据selector中的布尔值序列选择data中的元素进行迭代。只有在selector中对应位置的值为True时,相应位置的值才会被返回。
compress(data, selector)
selector
data
True
itertools模块中的一些函数用于生成组合和排列。
combinations
combinations函数可以生成指定长度的组合。它接受一个可迭代对象和一个整数r为参数,生成包含所有长度为r的组合的迭代器。
r
下面是combinations函数的一个例子:
import itertools letters = ['A', 'B', 'C', 'D'] for item in itertools.combinations(letters, 2): print(item)
('A', 'B') ('A', 'C') ('A', 'D') ('B', 'C') ('B', 'D') ('C', 'D')
在这个例子中,我们使用combinations(letters, 2)生成了所有长度为2的组合,并将它们的元素按顺序返回。
combinations(letters, 2)
permutations
permutations函数可以生成指定长度的排列。它接受一个可迭代对象和一个整数r为参数,生成包含所有长度为r的排列的迭代器。
下面是permutations函数的一个例子:
import itertools letters = ['A', 'B', 'C'] for item in itertools.permutations(letters, 2): print(item)
Python 教程
Tkinter 教程
Pandas 教程
NumPy 教程
Flask 教程
Django 教程
PySpark 教程
wxPython 教程
SymPy 教程
Seaborn 教程
SciPy 教程
RxPY 教程
Pycharm 教程
Pygame 教程
PyGTK 教程
PyQt 教程
PyQt5 教程
PyTorch 教程
Matplotlib 教程
Web2py 教程
BeautifulSoup 教程
Java 教程
HTML 教程
CSS 教程
CSS3 教程
jQuery 教程
Ajax 教程
AngularJS 教程
TypeScript 教程
WordPress 教程
Laravel 教程
Next.js 教程
PhantomJS 教程
Three.js 教程
Underscore.JS 教程
WebGL 教程
WebRTC 教程
VueJS 教程
SQL 教程
MySQL 教程
MongoDB 教程
PostgreSQL 教程
SQLite 教程
Redis 教程
MariaDB 教程
Vulkan 教程
OpenCV 教程
R语言 教程
Git 教程
VSCode 教程
Docker 教程
Gerrit 教程
Excel 教程
Go语言 教程
C++ 教程