python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况
 
any
any(iterable)

Return True if any element of the iterable is true. If the iterable is empty, return False

如果序列中任何一个元素为True,那么any返回True。该函数可以让我们少些一个for循环。有两点需要注意

(1)如果迭代器为空,返回的是False
(2)具有短路求值性质,即如果迭代器中某个元素返回True,那么就不会对后面的元素求值。
    笔者曾经犯过这么一个错误
    ret = any(self.calc_and_ret(e) for e in elements)
    def self.calc_and_ret(self, e):
        # do a lot of calc here which effect self
        return True(or False)
    本意是希望对所有的element都计算,然后返回一个结果。但事实上由于短路求值, 可能后面很多的元素都不会再调用calc_and_ret
 
all
all(iterable)

Return True if all elements of the iterable are true (or if the iterable is empty

当所有元素都为True时,all函数返回True。两点注意

(1)如果迭代器为空,返回的是True
(2)具有短路求值性质,即如果迭代器中某个元素返回False,那么就不会对后面的元素求值。
 
sum
sum(iterable[, start])

Sums start and the items of an iterable from left to right and returns the total. start defaults to 0.

sum用来对迭代器的数值求和,且可以赋予一个初始值(默认为0)。注意

(1)如果是空的迭代器,返回0
 
max min
分别返回可迭代序列的最大值 最小值。注意事项
(1)如果是空的迭代器,会抛异常(ValueError)
 
zip
接受n个序列作为参数,返回tuple的一个列表,第i个tuple由每个序列的第i个元素组成。for example
>>> zip((1,2,3), ('a', 'b', 'c'))
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> zip((1,2,3), ('a', 'b', 'c'), (True, False, True))
[(1, 'a', True), (2, 'b', False), (3, 'c', True)]
注意:
(1)作为参数的序列长度可以不一致,以长度最短的序列为准。for example
>>> zip((1,2,3), ('a', 'b'))
[(1, 'a'), (2, 'b')]
(2)即使参数只有一个序列,返回值也是a list of tuple
>>> zip((1,2,3))
[(1,), (2,), (3,)]
 
itertools.izip
功能能zip,不过返回值是iterator,而不是list
 
enumerate
这个函数大家应该都有使用过,用来返回序列中元素的下标和元素。同时容易被忽略的是:enumerate 还接受一个参数作为下标的开始
enumerate(sequence[, start=0])

我们知道在Python以及大多数编程语言中,数组(序列)的下标都是以0开始(lua除外)。但在现实中,比如排行,我们都是说第一名,而不是第0名。所以start=1可能是个好主意。

>>> for idx, e in enumerate(('a', 'b', 'c'), 1):
...     print idx, e
...
1 a
2 b
3 c

Python 小而美的函数的更多相关文章

  1. Python 动态创建函数【转】

    知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简 ...

  2. python中的函数

    Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...

  3. python高级之函数

    python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...

  4. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  5. Python基础三. 函数、lambda、filter、map、reduce

    一.概述 函数, 就是用一些语句组织起来实现一组特定的功能, 用来重复调用. 函数的作用及意义:最大化的重用代码和最小化的代码冗余以及对流程的分解. Python中有哪些函数: 内建的函数 第三方模块 ...

  6. Python 常用string函数

    Python 常用string函数 字符串中字符大小写的变换 1. str.lower()   //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...

  7. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  8. Python 之匿名函数和偏函数

    匿名函数与偏函数 匿名函数 Python允许使用lambda关键字创造匿名函数,lambda表达式用于定义匿名函数,它返回可调用的函数对象,语法如下: lambda arg1, arg2, … : e ...

  9. 用一个简单的例子来理解python高阶函数

    ============================ 用一个简单的例子来理解python高阶函数 ============================ 最近在用mailx发送邮件, 写法大致如 ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(69)-微信公众平台开发-功能概述

    系列目录 为什么要先发这个文章? 因为接下来的文章是关于微信开发的系列,心中一定要有一个概念,知道自己接下来要做什么功能. 而且微信到处都是坑,我首先要把微信与本地跑通起来才敢发布,否则中间出现坑导致 ...

  2. jQuery学习之路(1)-选择器

    ▓▓▓▓▓▓ 大致介绍 终于开始了我的jQuery学习之路!感觉不能再拖了,要边学习原生JavaScript边学习jQuery jQuery是什么? jQuery是一个快速.简洁的JavaScript ...

  3. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  4. 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签

    今天我无意间看到一个面试题: 如何用javascript 写个函数返回一个页面里共使用了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我 面试,肯定脑子嗡嗡的响.... 网上搜了搜也没有找到答 ...

  5. [开发笔记]GCC 分支预测优化

    #define likely(x) __builtin_expect(!!(x),1)#define unlikely(x) __builtin_expect(!!(x),0) 用于优化在做分支判断的 ...

  6. 代码的坏味道(21)——中间人(Middle Man)

    坏味道--中间人(Middle Man) 特征 如果一个类的作用仅仅是指向另一个类的委托,为什么要存在呢? 问题原因 对象的基本特征之一就是封装:对外部世界隐藏其内部细节.封装往往伴随委托.但是人们可 ...

  7. EC笔记:第4部分:22、所有成员都应该是private的

    EC笔记:第4部分:22.所有成员都应该是private的 更简单的访问 用户不用记得什么时候该带上括号,什么时候不用带上括号(因为很确定的就要带上括号) 访问限制 对于public的成员变量,我们可 ...

  8. Java中,异常的处理及抛出

    首先我们需要知道什么是异常? 常通常指,你的代码可能在编译时没有错误,可是运行时会出现异常.比如常见的空指针异常.也可能是程序可能出现无法预料的异常,比如你要从一个文件读信息,可这个文件不存在,程序无 ...

  9. Javascript中的valueOf与toString

    基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...

  10. Register-SPWorkflowService 404

    最近需要做一个SharePoint 2013工作流演示环境. 于是在自己的本子上安装了一个虚拟机. 虚拟机操作系统是Windows Server 2012 R2,计划把AD.SQL Server 20 ...