python中itertools的用法,python中itertools是什么意思

  python中itertools的用法,python中itertools是什么意思

  

Python视频教程栏目介绍itertools模块。

  Python中有一个强大的迭代工具包itertools,这是Python自带的标准工具包之一。

  00-1010由于itertools是一个内置库,它不需要任何安装。直接导入itertools就可以了。

  Product用于求多个迭代对象的笛卡尔积,相当于嵌套for循环。也就是:

  笛卡儿积是指数学上两个集合x和y的笛卡儿积,也称为直积,表示为x y。

  乘积(A,B)与``((x,y) for x in A for y in B)`

  导入itertools

  对于itertools.product中的项目([1,2,3],[100,200]):

  打印(项目)

  #输出如下所示

  (1, 100)

  (1, 200)

  (2, 100)

  (2, 200)

  (3, 100)

  (3,200)复制代码

product

。通俗地说,排列就是一个可迭代对象的所有数学或字符的完整排列。

  所有排列,即产生指定个数元素的所有排列(顺序相关),即高中排列组合中的A。

  置换它接受一个集合对象,然后生成一个元组序列。

  例如,打印(列表(ITER工具。置换( ABC ,3)),其中A33=6A _ 3 ^ 3=6a 33=

  777777777777778em;">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)是 创建一个迭代器,从传入的起始参数开始的均匀间隔的数值。

  我们来看一个简单的例子

  

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复制代码

chain

chain链条,主要用来把多个序列连在一起做迭代。

  

import itertools

  chain = itertools.chain([1, 2, 3], [4, 5, 6])

  for c in chain:

   print(c)

  1

  2

  3

  4

  5

  6

  复制代码

chain还有一个非常重要的功能就是展平列表。

  

>>> list(itertools.chain([1, 2, 3], [4, 5], [6] ,[7,8]))

  [1, 2, 3, 4, 5, 6, 7, 8]复制代码

cycle

import itertools

  cycle = itertools.cycle([1, 2, 3])

  for c in cycle:

   print(c)复制代码

运行结果输出 1 2 3 1 2 3……一直周而复始,永不停息。

  

相关免费学习推荐:python视频教程

  

以上就是深入认识Python中的itertools模块的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: