python技巧分享(十五)

2018-08-16 LEo 更多博文 » 博客 » GitHub »

原文链接 http://reborncodinglife.com/2018/08/16/python-tricks-15/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 lambda

#!/usr/bin/env python
# coding=utf8


add = lambda x, y : x + y
print add(1, 2)
# 3

print (lambda x, y: x + y)(2, 3)
# 5

lambda主要用于实现匿名函数,定义一些简短的、轻量级的函数,但是牺牲了一定的可读性。由示例中可以看到,这里通过lambda定义了一个add函数,lambda自动实现了return功能,add的调用方式和正常的函数一样。另外,lambda定义的函数可以不赋值给任何变量,直接就可以调用。

2 子类判断

#!/usr/bin/env python
# coding=utf8


class BaseClass:
    pass


class SubClass(BaseClass):
    pass


class OtherClass:
    pass


print issubclass(SubClass, BaseClass)
# True
print issubclass(OtherClass, BaseClass)
# False

通过内置函数issubclass,可以判断一个类是否属于另外一个类的子类。由示例中可以看到,SubClass是BaseClass的子类,而OtherClass不是BaseClass的子类。

3 元素统计

#!/usr/bin/env python
# coding=utf8

import collections


l = 'abbcccdddd'
list_counter = collections.Counter(l)
print list_counter
# Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1})
print list_counter.most_common(3)
# [('d', 4), ('c', 3), ('b', 2)]

借助collections模块,可以实现一个可迭代对象的计数功能。由示例中可以看到,这里分别计算出了列表l中每个字母出现的次数。通过调用most_common方法,还可以得到出现次数最多的前三个字母。详情请参考:https://docs.python.org/2/library/collections.html