> 백엔드 개발 > 파이썬 튜토리얼 > Python의 itertools 모듈에 대한 심층적인 이해

Python의 itertools 모듈에 대한 심층적인 이해

coldplay.xixi
풀어 주다: 2020-11-12 17:32:17
앞으로
1844명이 탐색했습니다.

Python 비디오 튜토리얼 칼럼에서는 itertools 모듈을 소개합니다.

Python의 itertools 모듈에 대한 심층적인 이해

Python에는 Python과 함께 제공되는 표준 도구 패키지 중 하나인 itertools라는 강력한 반복 도구 패키지가 있습니다.

product

itertools는 내장 라이브러리이므로 설치할 필요가 없습니다. itertools 가져오기만 하면 됩니다. 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

通俗地讲,permutations就是返回可迭代对象的所有数学或者字符的全排列方式。

全排列,即产生指定数目的元素的所有排列(顺序有关),也就是高中排列组合中的那个A

permutations它接受一个集合对象,然后产生一个元组序列。

比如print(list(itertools.permutations('abc',3))),共有A33=6A_3^3=6种情况。

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')复制代码
로그인 후 복사

combinations

求列表或生成器中指定数目的元素不重复的所有组合

itertools.permutations(iter,r)itertools.combinations(iter,r)的区别是:前者是permutations允许重复使用,后者combinations是不能重复使用

>>> print(list(itertools.combinations('abc',3)))
[('a', 'b', 'c')]复制代码
로그인 후 복사

combinations_with_replacement

combinations_with_replacementcombinations很相似,唯一的不同在于前者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

accumulate用于对列表中元素逐个累加

>>> import itertools
>>> x = itertools.accumulate(range(10))
>>> print(list(x))
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]复制代码
로그인 후 복사

compress

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

count(初值=0, 步长=1)

product는 여러 반복 가능한 객체 (Cartesian Product)의 데카르트 곱을 찾는 데 사용됩니다. 이는 중첩된 for 루프와 동일합니다. 즉:

Cartesian product는 수학에서 데카르트 곱을 나타냅니다. 두 집합 X와 Y의 곱(직접 곱이라고도 함)은 X × Y로 표현됩니다.

product(A, B)는 ``((x,y) for x in A for y in B)`와 동일합니다.

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复制代码
로그인 후 복사

순열

일반인의 관점에서 순열은 반복 가능한 객체의 모든 수학 또는 문자의 전체 배열을 반환합니다.

전체 순열, 즉 순서에 따라 지정된 수의 요소를 생성하는 모든 순열로, 고등학교 순열 조합의 A입니다.

순열 컬렉션 객체를 받아들인 다음 일련의 튜플을 생성합니다.

예를 들어 print(list(itertools.permutations('abc',3)))에는 가 있습니다. A3 3=6A_3^ 3=6

3
🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜=🎜🎜🎜🎜6🎜🎜🎜🎜🎜 상황. 🎜
import itertools
chain = itertools.chain([1, 2, 3], [4, 5, 6])
for c in chain:
   print(c)
1
2
3
4
5
6  
复制代码
로그인 후 복사
🎜지정된 길이의 모든 순열이 필요한 경우 선택적 길이 매개변수 r를 전달할 수 있습니다. 🎜
>>> list(itertools.chain([1, 2, 3], [4, 5], [6] ,[7,8]))
[1, 2, 3, 4, 5, 6, 7, 8]复制代码
로그인 후 복사

조합🎜🎜목록이나 생성기에서 지정된 수의 요소가 반복되지 않는 모든 조합을 찾습니다🎜🎜itertools.permutations(iter, r)itertools.combinations(iter,r)의 차이점은 다음과 같습니다. 전자는 순열이며 재사용이 허용되는 반면 후자는 조합 재사용할 수 없습니다🎜
import itertools
cycle = itertools.cycle([1, 2, 3])
for c in cycle:
   print(c)复制代码
로그인 후 복사
combinations_with_replacement🎜🎜combinations_with_replacementcombinations는 매우 유사하며 유일한 차이점은 이전 combinations_with_replacement 컬렉션 유형 데이터가 반복될 수 있습니다🎜rrreee

accumulate🎜🎜accumulate는 목록의 요소를 하나씩 누적하는 데 사용됩니다. 🎜rrreee

compress🎜🎜compress()는 필터링 도구입니다. 출력할 때 반복 가능한 개체와 부울 선택 시퀀스를 허용합니다. 부울 시퀀스에서 True인 모든 반복 가능한 객체를 출력합니다. 🎜rrreee

count🎜🎜count(initial value=0, step=1)는 전달된 시작 매개변수에서 균등한 간격으로 시작하여 반복자를 생성하는 것입니다. 가치. 🎜🎜주로 반복을 위해 여러 시퀀스를 함께 연결하는 데 사용되는 간단한 예🎜rrreee🎜chain🎜🎜체인 체인을 살펴보겠습니다. 🎜rrreee🎜체인에는 목록을 평면화하는 매우 중요한 기능도 있습니다. 🎜rrreee🎜cycle🎜rrreee🎜연산 결과 출력은 1 2 3 1 2 3... 계속 돌고 돌고 멈추지 않습니다. 🎜🎜🎜🎜관련 무료 학습 권장사항: 🎜🎜🎜python 비디오 튜토리얼🎜🎜🎜🎜

위 내용은 Python의 itertools 모듈에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.im
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿