Python-一些实用的函数
一,返回值为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
应用:在一颗二叉树中,找出每一层中的最大元素(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
其中
key
参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。这个技术是快速的因为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'
全部大写:str.upper()
全部小写:str.lower()
大小写互换:str.swapcase()
2、字符串替换
str.replace
'he2lo'
可以传三个参数,第三个参数为替换次数
3、字符串切割:
str.split
['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-一些实用的函数的更多相关文章
- 小甲鱼:Python学习笔记003_函数
>>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...
- Python趣味实用小工具
代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...
- 实现python中的map函数
假设Python没有提供map()函数,自行编写my_map()函数实现与map()相同的功能.以下代码在Python 2.7.8中实现. 实现代码: def my_map(fun,num): i = ...
- python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)
1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...
- python中常用的函数与库一
1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作 ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python --- Python中的callable 函数
python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...
- python迭代器与iter()函数实例教程
python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...
- python基础——高阶函数
python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...
- 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...
随机推荐
- (原创)我对未来的人类的发展,以及AI技术发展的一些思考。
最近AI非常的火,不仅仅是阿尔法狗的成功,因为它击败了人类最强的大脑,颠覆了人类几千年来的对传统的认识,也让人类意识 到了一个问题:天外有天,人外有AI. 那么AI究竟会对人类的未来造成什么深远的影响 ...
- 几种功能类似Linux命令汇总
wc 命令用于统计文本的行数.字数.字节数,格式为"wc [参数] 文本". -l 只显示行数 -w 只显示单词数 -c 只显示字节数 例:统计当前系统中的用户个数: [roo ...
- 使用D3 Geo模块画澳大利亚地图
数据 数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.因此做数据可视化前需要想明白2件事: 你有什么数据? 你要传达什么信息? 本文中的示例中,将以不同的颜色显示澳大利亚不同地区的客户数 ...
- Alamofire源码解读系列(六)之Task代理(TaskDelegate)
本篇介绍Task代理(TaskDelegate.swift) 前言 我相信可能有80%的同学使用AFNetworking或者Alamofire处理网络事件,并且这两个框架都提供了丰富的功能,我也相信很 ...
- Solr field alias
Field alias Any field, function, or transformer can be displayed with a different name in the output ...
- 机器学习基石 2 Learning to Answer Yes/No
机器学习基石 2 Learning to Answer Yes/No Perceptron Hypothesis Set 对于一个线性可分的二分类问题,我们可以采用感知器 (Perceptron)这种 ...
- 搭建ftp服务器实现文件共享
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP(File Transfer Protocol ...
- Jdom读取XML文件
学习Spring时,我们经常看到很多xml配置文件,Spring通过在配置文件中的配置,使用IOC(控制反转),从而实现代码的灵活性,本篇我就为大家介绍一种解析xml方式--Jdom 首先我们到Jdo ...
- TCP/IP笔记(二)TCP/IP简介
上回,主要介绍了下协议和OSI参考模型,并简单了解下网络构成要素,这回该说说TCP/IP了 互联网与TCP/IP的关系 互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发 ...
- python计算文件夹大小(linux du命令 简化版)
C盘又满了,怎么办?用了一些垃圾清理软件(或者bat脚本),但是还是不理想,那么具体哪些文件夹下面有巨大的文件呢?windows并不能通过详细信息看到每个文件夹的大小(PS:这里所谓的文件夹的大小是指 ...