一,返回值为bool类型的函数

1.any()函数

any(iterable)->bool

当迭代器中有一个是Ture,则返回Ture;若interable=NUll,则返回False.

>>> any([1,0])
True
>>> any([0,0])
False
>>> any([])
False
>>> any([1,0,0])
True

注:在Python中, False相当于:0,[], (), {}, 0.0 , " ", ' ' .

应用:在一颗二叉树中,找出每一层中的最大元素(leetcode515)。

Input: 

          1
/ \
3 2
/ \ \
5 3 9 Output: [1, 3,9] 
#类节点的定义
class node(self) :
def __init__(self,data)
self.val=data
self.right=NULL
self.left=NULL class Solution(object):
def largestValues(self, root):
maxlist=[]
row=[root]
while any(row):
maxlist.append(max[node.val for node in row])
row=[kid for node in row for kid in node.left,node.right) if kid]
return maxlist

2.all()函数

all(iterable)->bool

迭代器中每个元素必须都为真时,返回Ture,否则返回False.

>>> all([1,0])
False
>>> all(["e",1])
True

3.isinstance(),issubclass()

1.isinstance(object, classinfo) ->bool.返回True如果参数object是classinfo的一个实例,否则返回False。

2.issubclass(class, classinfo) .返回True如果参数class是classinfo的一个子类,否则返回False。

待续中。。。

二,内置高阶函数(可以接受函数名为参数的函数)

高阶函数:在数学中类似于算子,高阶导数,复合函数,也就是说把函数当作自变量,通过某种对应关系映射得到一个新的函数。在Python中常见内置的高阶函数有:mape(),reduce(),filter(),sortded()

1.map()

map(function_name,list)->list 。map()将接受 一个函数与列表为参数,返回一个新的列表。这个函数依次对列表中的每个元素进行操作,返回得到的结果,组成一个列表作为输出的结果。

列如:

def string_len(str):

return {str[0].upper()+str[1:].lower():len(str)}

strlist=['whb','hello,world','day day up']
print map(string_len,strlist)

>>> [{'Whb': 3}, {'Hello,world': 11}, {'Day day up': 10}]

实现,map()函数的作用相当于迭代,我们只需要定义一个实现我们想要的子结果的函数即可。

2.reduce()

reduce把一个函数f(x,y)作用在一个序列[x1, x2, x3…]上,f(x,y)必须接收两个参数x,y,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25

3.filter()

filter(f,list)->list;这个f的作用是对list的每个元素进行判断,返回True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

def odd(x):
return x%2!=0
filter(odd,[1,2,3,4,6,3,6,10,3])

filter(f,list)相当于一个筛子,其中f函数就好像就是一个衡量标准,若list中的元素符合标准,就保留下来。否则就删除掉。

4.sorted()

排序接口:对给定的List L进行排序,
方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本。
方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变。

>>> a=[1, 54, 6, 90, 8, 9]
>>> b=[33,7,3,1]
>>> a.sort()
>>> a
[1, 6, 8, 9, 54, 90]
>>> sorted(b)
[1, 3, 7, 33]
>>> b
[33, 7, 3, 1]

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

其中

(1)  cmp参数
cmp接受一个函数,拿整形举例,形式为:
def f(a,b):
     return a-b
如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了
(2)  key参数
key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。这个技术是快速的因为key指定的函数将准确地对每个元素调用。,形式如下
def f(a):
     return len(a)
key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
(3) reverse参数
接受False 或者True 表示是否逆序
 
例如通过key指定的函数来忽略字符串的大小写:
<<< sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

同样的技术对拥有命名属性的复杂对象也适用,例如:

>>> class Student:
def __init__(self, name, grade, age):
self.name = name
self.grade = grade
self.age = age
def __repr__(self):
return repr((self.name, self.grade, self.age))
>>> student_objects = [
Student('john', 'A', 15),
Student('jane', 'B', 12),
Student('dave', 'B', 10)]
>>> sorted(student_objects, key=lambda student: student.age) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
sorted里面的key参数的使用非常广泛,因此python提供了一些方便的函数来使得访问方法更加容易和快速。operator模块有itemgetter,attrgetter,从2.6开始还增加了methodcaller方法。使用这些方法,上面的操作将变得更加简洁和快速:

>>> from operator import itemgetter, attrgetter
>>> sorted(student_tuples, key=itemgetter(2))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(student_objects, key=attrgetter('age'))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
operator模块还允许多级的排序,例如,先以grade,然后再以age来排序
>>> sorted(student_tuples, key=itemgetter(1,2))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
>>> sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

list.sort()sorted()都接受一个参数reverse(True or False)来表示升序或降序排序。

例如对上面的student降序排序如下:

>>> sorted(student_tuples, key=itemgetter(2), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(student_objects, key=attrgetter('age'), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

待续中。。。

三、类型转换函数

int("5")                        # 转换为整数 integer

float(2)                         # 转换为浮点数 float

long("23")                      # 转换为长整数 long integer

str(2.3)                        # 转换为字符串 string

complex(3, 9)                   # 返回复数 3 + 9i

ord("A")                        # "A"字符对应的数值

chr(65)                          # 数值65对应的字符

unichr(65)                       # 数值65对应的unicode字符

bool(0)                          # 转换为相应的真假值,在Python中,0相当于False

bin(56)                         # 返回一个字符串,表示56的二进制数

hex(56)                         # 返回一个字符串,表示56的十六进制数

oct(56)                         # 返回一个字符串,表示56的八进制数

list((1,2,3))                   # 转换为表 list

tuple([2,3,4])                  # 转换为定值表 tuple

slice(5,2,-1)                    # 构建下标对象 slice

dict(a=1,b="hello",c=[1,2,3])   # 构建词典 dictionary

待续中。。。。

四、字符串处理函数

1、字符串大小写:

str.capitalize

>>> 'hello'.capitalize()

'Hello'

全部大写:str.upper()
全部小写:str.lower()
大小写互换:str.swapcase()

2、字符串替换

str.replace

>>>'hello'.replace('l','2',1)

'he2lo'

可以传三个参数,第三个参数为替换次数

3、字符串切割:

str.split

>>> 'hello'.split('l')
['he', '', 'o']

可以传二个参数,第二个参数为切割次数

4.字符串格式化

获取固定长度,右对齐,左边不够用空格补齐:str.ljust(width)
获取固定长度,左对齐,右边不够用空格补齐:str.rjust(width)
获取固定长度,中间对齐,两边不够用空格补齐:str.centerjust(width)
获取固定长度,右对齐,左边不足用0补齐:str.zfill(width)

>>> str.rjust(40)
' python string function'
>>> str.rjust(30,'')
'00000000python string function'
>>.>str.ljust(30,'')
'python string function00000000'
>>> str.center(30,'')
'0000python string function0000'

5.字符串搜索相关
搜索指定字符串,没有返回-1:str.find('t')
指定起始位置搜索:str.find('t',start)
指定起始及结束位置搜索:str.find('t',start,end)
从右边开始查找:str.rfind('t')
搜索到多少个指定字符串:str.count('t')
上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1

6.字符串去空格及去指定字符
去两边空格:str.strip()
去左空格:str.lstrip()
去右空格:str.rstrip()
去两边字符串:str.strip('d'),相应的也有lstrip,rstrip

7.字符串判断相关
是否以start开头:str.startswith('start')
是否以end结尾:str.endswith('end')
是否全为字母或数字:str.isalnum()
是否全字母:str.isalpha()
是否全数字:str.isdigit()
是否全小写:str.islower()
是否全大写:str.isupper()

五.其他内置函数

1.enumerate()  .返回一个枚举类型

>>> for i,j in enumerate(('a','b','c')):
print(i,j)

0 a
1 b
2 c

>>> for i,j in enumerate([1,2,3]):
print(i,j)

0 1
1 2
2 3

>>> for i,j in enumerate('abc'):
print(i,j)

0 a
1 b
2 c

>>> for i,j in enumerate({'a':1,'b':2}):
print(i,j)

0 b
1 a

2.zip(*iterables) 生成一个迭代器,它(迭代器)聚合了从每个可迭代数集里的元素。

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]

Python-一些实用的函数的更多相关文章

  1. 小甲鱼:Python学习笔记003_函数

    >>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...

  2. Python趣味实用小工具

    代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...

  3. 实现python中的map函数

    假设Python没有提供map()函数,自行编写my_map()函数实现与map()相同的功能.以下代码在Python 2.7.8中实现. 实现代码: def my_map(fun,num): i = ...

  4. python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

    1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

  5. python中常用的函数与库一

    1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...

  6. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  7. python --- Python中的callable 函数

    python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...

  8. python迭代器与iter()函数实例教程

    python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...

  9. python基础——高阶函数

    python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...

  10. 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...

随机推荐

  1. 4052: [Cerc2013]Magical GCD

    4052: [Cerc2013]Magical GCD Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 70[Submit][ ...

  2. Alamofire源码解读系列(六)之Task代理(TaskDelegate)

    本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用AFNetworking或者Alamofire处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很 ...

  3. 列表总结Canvas和SVG的区别

    参考链接: 菜鸟教程 HTML5 内联SVG 经典面试题(讨论canvas与svg的区别) Canvas | SVG ---|--- 通过 JavaScript 来绘制 2D 图形|是一种使用 XML ...

  4. Java 8并发工具包漫游指南

    Java 8并发工具包简介 Java 8并发工具包由3个包组成,分别是java.util.concurrent.java.util.concurrent.atomic和java.util.concur ...

  5. 给 Virtualbox 中 Ubuntu 系统设置静态 IP ,让 DNS 配置信息不会在重启后被清除

    虚拟机网络选择 桥接网卡 模式. 主要涉及两个步骤: 1. 修改 /etc/network/interfaces 文件: 2. 修改 dns : 第一步,修改 interfaces 文件: sudo ...

  6. Linux块设备驱动(二) _MTD驱动及其用户空间编程

    MTD(Memory Technology Device)即常说的Flash等使用存储芯片的存储设备,MTD子系统对应的是块设备驱动框架中的设备驱动层,可以说,MTD就是针对Flash设备设计的标准化 ...

  7. Ubuntu安装Nginx+PHP7.0.4+MySQL5.6

    安装Nginx 1.首先添加nginx_signing.key(必须,否则出错) $ wget http://nginx.org/keys/nginx_signing.key $ sudo apt-k ...

  8. Java EE基础之JSP

    从本篇文章开始,我会用文章记录下我在学习Java EE过程中的一些笔记和感悟,至于还没有更新结束的Java SE还是会继续写的,只是我觉得一直写语法很枯燥,自己也没法继续下去,所以带着点web学习,会 ...

  9. win7禁用离开模式,让笔记本卡盖后进入休眠

    进入注册列表项 将HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerPower,中的“AwayModeEnabled”删除即 ...

  10. 使用Python对Access读写操作

    学习Python的过程中,我们会遇到Access的读写问题,这时我们可以利用win32.client模块的COM组件访问功能,通过ADODB操作Access的文件. 1.导入模块 import win ...