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
							 |