Python itertools,python3 itertools

  Python itertools,python3 itertools

  本文主要介绍了Python中itertools库的四个函数,主要讨论了itertools库中非常常用的几个函数,并重点讨论了什么时候应该考虑使用它们。有需要的朋友可以参考一下。

  00-1010 1.导言2。accumulate()函数3。compress()函数4。groupby()函数5。排列组合运算6小结

  

目录

 

  在Python开发中,itertools库经常被忽略。事实上,这个库中包含了一些优秀的函数,尤其是那些用于数据流的函数。在本文中,我们将讨论这个库中的几个函数,并重点讨论何时应该考虑使用它们。

  废话少说,我们开始吧!

  

1. 引言

 

  第三方库itertools提供的函数accumulate()可以帮助我们积累数据流。换句话说,假设我们有一个数据列表[a,b,c,d,e]和一个运算f,那么函数accumulate()可以帮助我们计算f(a,b),f(f(a,b),c),d。

  文字有点不直观,举个积累的栗子吧!

  样例代码如下:

  导入itertools

  数据=[3,4,6,2,1,9,0,7,5,8]

  res=itertools.accumulate(data,lambda x,y:x y)

  打印(列表(结果))

  # [3, 7, 13, 15, 16, 25, 25, 32, 37, 45]

  上面的函数accumulate()用于将3和4相加,然后得到7,再加上6得到另一个值,以此类推。

  注意:如果要对给定的3个或3个以上的值进行累加运算,不允许使用这个函数,因为accumulate()只接受迭代器,迭代器每次调用next()最多返回1个元素。

  

2. accumulate() 函数

 

  compress()函数可以根据我们的喜好过滤内容。与filter()函数不同,compress()函数需要传入相应的标志位来决定是否应该保留每个值。

  举个例子会更加直观,相关样例代码如下:

  导入itertools

  数据=[3,4,6,2,1,9,0,7,5,8]

  选择器=[1,0,0,0,1,1,0,1,1,0]

  res=itertools.compress(数据,选择器)

  打印(列表(结果))

  # [3, 1, 9, 7, 5]

  在上面的例子中,如果数据是奇数,选择器将为1,否则为0。因此,函数compress()操作的结果将只保留原始数据中的奇数。

  

3.compress() 函数

 

  在许多情况下,如果我们想按值对元组进行分组,我们会以随机顺序获得Python中的元组列表。这是函数groupby()发挥作用的完美场景!

  函数groupby()将接受一个带有迭代参数和返回值的函数,然后它将根据函数返回值对元组列表进行分组。

  例如,我们想按国家对以下城市进行分组:

  导入itertools

  data=[(纽约,美国),(上海,中国),

  (拉,美国,(重庆,中国))

  对于city,在itertools.groupby(sorted(data,key=lambda x: x[1]),lambda x: x[1])中分组:

  对于:组中的I

  打印( %s在%s中 % (i[0],城市))

  打印()

  #上海在中国。

  #重庆在中国。

  #纽约在美国。

  #洛杉矶在我们心中。

  

4. groupby() 函数

 

  排列组合大概是itertools库中最神奇的函数之一了,它提供了排列组合运算符!

  我们唯一需要做的就是将正确的关键字和输出元组的长度一起传递给相应的函数,

  如下例所示:

  导入itertools

  数据=[3,4,6]

  com _ RES=ITER tools.combinations(data,2)

  打印(列表(com_res))

  # [(3, 4), (3, 6), (4, 6)]

  com _ RES=ITER tools . permutations(data,2)

  打印(列表(com_res))

  # [(3, 4), (3, 6), (4, 3), (4, 6), (6, 3), (6, 4)]

  com _ without _ replacement _ RES=ITER tools.combinations _ with _ replacement(data,2)

  打印(列表(com_without_replacement_res))

  # [(3, 3), (3, 4), (3, 6), (4, 4), (4, 6), (6, 6)]

  product_res=itertools.product(数据,数据)

  打印(列表(产品资源))

  # [(3, 3), (3, 4), (3, 6), (4, 3), (4, 4), (4, 6), (6, 3), (6, 4), (6, 6)]

  

5. 排列组合操作

 

  itertools库对于大多数人来说是一个未被充分利用甚至很少听说的库,但是它确实包含了一些非常有用的函数。这些函数通常可以帮助我们将代码行数减少到只有一行,使我们的代码看起来更加简洁优雅!

  关于Python中itertools库的四个函数介绍的这篇文章到此为止。关于Python中itertools库的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

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

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