码迷,mamicode.com
首页 > 编程语言 > 详细

python counter、闭包、generator

时间:2018-01-29 15:33:21      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:简单   class   generator   top   函数   变量   并且   port   解决   

 

1、python库——counter

from collections import Counter
breakfast=[spam,spam,eggs,spam]
breakfast_counter=Counter(breakfast)
breakfast_counter    #Counter({‘eggs‘: 1, ‘spam‘: 3})
#函数 most_common() 以降序返回所有元素,或者如果给定一个数字,会返回该数字前的的元素
breakfast_counter.most_common() #[(‘spam‘, 3), (‘eggs‘, 1)]
breakfast_counter.most_common(1) #[(‘spam‘, 3)]
#可以组合计数器
lunch=[eggs,eggs,bacon]
lunch_counter=Counter(lunch)
lunch_counter     #Counter({‘bacon‘: 1, ‘eggs‘: 2})
#第一种组合计数器的方式是使用 + 从一个计数器加上另一个
breakfast_counter+lunch_counter    #Counter({‘bacon‘: 1, ‘eggs‘: 3, ‘spam‘: 3})
#第二种组合计数器的方式是使用 -  从一个计数器去掉另一个
breakfast_counter-lunch_counter   #Counter({‘spam‘: 3})
lunch_counter-breakfast_counter   #Counter({‘bacon‘: 1, ‘eggs‘: 1})
#第三种组合计数器的方式是使用 &  得到二者共有的项
breakfast_counter&lunch_counter   #Counter({‘eggs‘: 1})

 2、python闭包

结论:尽量减少使用闭包

1、有的闭包可以使用两个函数分开来写,简单易读。

2、如果不使用nonlocal,可以读取作用域外的变量,但是不能修改,使用nonlocal,可以读取和修改,容易出bug,慎用!

3、python generators

要想创建一个iterator,必须实现一个有__iter__()和__next__()方法的类,类要能够跟踪内部状态并且在没有元素返回的时候引发StopIteration异常。

这个过程很繁琐而且违反直觉,Generator能够解决这个问题。

python generator是一个简单的创建iterator的途径,前面介绍那些繁琐的步骤都可以被generator自动完成。

简单来说,generator是一个能够返回迭代器对象的函数。

python counter、闭包、generator

标签:简单   class   generator   top   函数   变量   并且   port   解决   

原文地址:https://www.cnblogs.com/bawu/p/8064726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!