Heim >Backend-Entwicklung >Python-Tutorial >Vertiefende Kenntnisse des itertools-Moduls in Python
Die Kolumne „Python-Video-Tutorial“ stellt das itertools-Modul vor.
Da es sich bei itertools um eine integrierte Bibliothek handelt, ist keine Installation erforderlich, sondern nur import itertools
.
Produkt wird verwendet, um das kartesische Produkt mehrerer iterierbarer Objekte zu finden (Kartesisches Produkt)
Es entspricht einer verschachtelten for-Schleife. Das heißt:
X × Y
ausgedrückt. product(A, B)
ist dasselbe wie „((x,y) für x in A für y in B)“.import itertools
即可。
product 用于求多个可迭代对象的笛卡尔积(Cartesian Product)
,它跟嵌套的 for 循环等价.即:
笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y
。
product(A, B)
和 ``((x,y) for x in A for y in B)`一样.
import itertools for item in itertools.product([1,2,3],[100,200]): print(item) # 输出如下 (1, 100) (1, 200) (2, 100) (2, 200) (3, 100) (3, 200)复制代码
通俗地讲,permutations就是返回可迭代对象的所有数学或者字符的全排列方式。
全排列,即产生指定数目的元素的所有排列(顺序有关),也就是高中排列组合中的那个A
。
permutations它接受一个集合对象,然后产生一个元组序列。
比如print(list(itertools.permutations('abc',3)))
,共有种情况。
items = ['a','b','c'] from itertools import permutations for i in permutations(items): print(i) #排列组合 print(list(itertools.permutations('abc',3))) # 输出如下 ('a', 'b', 'c') ('a', 'c', 'b') ('b', 'a', 'c') ('b', 'c', 'a') ('c', 'a', 'b') ('c', 'b', 'a') [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]复制代码
如果需要指定长度的所有排列,可以传递一个可选的长度参数r
。
items = ['a','b','c'] from itertools import permutations for i in permutations(items,2): print(i) #排列组合 # 输出如下 ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'c') ('c', 'a') ('c', 'b')复制代码
求列表或生成器中指定数目的元素不重复的所有组合
itertools.permutations(iter,r)
和 itertools.combinations(iter,r)
的区别是:前者是permutations
允许重复使用,后者combinations
是不能重复使用
>>> print(list(itertools.combinations('abc',3))) [('a', 'b', 'c')]复制代码
combinations_with_replacement
和combinations
很相似,唯一的不同在于前者combinations_with_replacement
集合类型中的数据是可以重复的
>>> print(list(itertools.combinations_with_replacement('abc',3))) [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ('a', 'b', 'b'), ('a', 'b', 'c'), ('a', 'c', 'c'), ('b', 'b', 'b'), ('b', 'b', 'c'), ('b', 'c', 'c'), ('c', 'c', 'c')]复制代码
accumulate
用于对列表中元素逐个累加
>>> import itertools >>> x = itertools.accumulate(range(10)) >>> print(list(x)) [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]复制代码
compress()
是筛选工具,它接受一个可迭代对象以及一个布尔选择序列作为输入,输出时会将所有布尔序列中为True的可迭代对象输出。
import itertools its=["a","b","c","d","e","f","g","h"] selector=[True,False,1,0,3,False,-2,"y"] for item in itertools.compress(its,selector): print (item) a c e g h 复制代码
count(初值=0, 步长=1)
from itertools import count for i in count(10): #从10开始无限循环 if i > 20: break else: print(i) 10 11 12 13 14 15 16 17 18 19 20复制代码
Um es für den Laien auszudrücken: Permutationen geben die vollständige Anordnung aller mathematischen Elemente oder Zeichen eines iterierbaren Objekts zurück.
A
in der High-School-Permutationskombination entspricht. Permutationen Es akzeptiert ein Sammlungsobjekt und erzeugt dann eine Folge von Tupeln.
Zum Beispiel print(list(itertools.permutations('abc',3)))
gibt es
Das obige ist der detaillierte Inhalt vonVertiefende Kenntnisse des itertools-Moduls in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!