python函数: 内置函数
forthttp://blog.csdn.net/pipisorry/article/details/44755423
Python内置函数
Python内置(built-in)函数随着python解释器的运行而创建。在Python的程序中,你可以随时调用这些函数,不需要定义。
[python build-in functions - https://docs.python.org/release/3.4.2/library/functions.html]
[https://docs.python.org/release/2.7.2/library/functions.html]
python常用内置函数举例
最常见的内置函数是:
print("Hello World!")
数学运算
abs(-5) # 取绝对值,也就是5
round(2.6) # 四舍五入取整,也就是3.0
pow(2, 3) # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5
cmp(2.3, 3.2) # 比较两个数的大小
divmod(9,2) # 返回除法结果和余数
max([1,5,2,9]) # 求最大值
min([9,2,-4,2]) # 求最小值
sum([2,-1,9,12]) # 求和
类型转换
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
在Python中,下列对象都相当于False:[], (),{},0,
None,0.0,''
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
序列操作
all([True, 1, "hello!"]) # 是否所有的元素都相当于True值
any(["", 0, False, [], None]) # 是否有任意一个元素相当于True值
sorted([1,5,3]) # 返回正序的序列,也就是[1,3,5]
reversed([1,5,3]) # 返回反序的序列,也就是[3,5,1]
类,对象,属性
- # define class
- class Me(object):
- def test(self):
- print "Hello!"
- def new_test():
- print "New Hello!"
- me = Me()
hasattr(me, "test") # 检查me对象是否有test属性
getattr(me, "test") # 返回test属性
setattr(me, "test", new_test) # 将test属性设置为new_test
delattr(me, "test") # 删除test属性
isinstance(me, Me) # me对象是否为Me类生成的对象 (一个instance)
issubclass(Me, object) # Me类是否为object类的子类
编译,执行
repr(me) # 返回对象的字符串表达
compile("print('Hello')",'test.py','exec') # 编译字符串成为code对象
eval("1 + 1") # 解释字符串表达式。参数也可以是compile()返回的code对象
exec("print('Hello')") #
解释并执行字符串,print('Hello')。参数也可以是compile()返回的code对象
其他
input("Please input:") # 等待输入
globals() # 返回全局命名空间,比如全局变量名,全局函数名
locals() # 返回局部命名空间
其它常用函数
基本数据类型 type() dir() len()
文本文件的输入输出 open()
循环设计 range() enumerate() zip()
Note: range好像只能生成整数类型的range,但是可以使用np.arange(0,1,0.1)来生成float类型的range。
循环对象 iter()
函数对象 map() filter() reduce()
zip([iterable,])
这个函数返回一个含元组的列表,具体请看例子。
l1 = ('You gotta', 'the') l2 = ('love', 'built-in') out = [] if len(l1) == len(l2): for i in range(len(l1)): out.append((l1[i], l2[i])) # out = [('You gotta', 'love'), ('the', 'built-in)]
或者这么写:
l1 = ['You gotta', 'the'] l2 = ['love', 'built-in'] out = zip(l1, l2) # [('You gotta', 'love'), ('the', 'built-in)]
如果你想得到倒序的话加上 * 操作符就可以了。
print zip(*out) # [('You gotta', 'the'), ('love', 'built-in')]
Note: zip函数中的参数len不同,则只取len短的为准
Zipping and unzipping lists and iterables
>>> a = [1, 2, 3] >>> b = ['a', 'b', 'c'] >>> z = zip(a, b) >>> z [(1, 'a'), (2, 'b'), (3, 'c')] >>> zip(*z) [(1, 2, 3), ('a', 'b', 'c')]
多个序列的zip
如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()方便地实现:
ta = [1,2,3] tb = [9,8,7] tc = ['a','b','c'] for (a,b,c) in zip(ta,tb,tc): print(a,b,c)
每次循环时,从各个序列分别从左到右取出一个元素,合并成一个tuple,然后tuple的元素赋予给a,b,c
zip()函数的功能,就是从多个列表中,依次各取出一个元素。每次取出的(来自不同列表的)元素合成一个元组,合并成的元组放入zip()返回的列表中。zip()函数起到了聚合列表的功能。
=[
1
,
2
,
3
,
4
,
5
,
6
]
>>>
# Using iterators
>>> group_adjacent
=
lambda
a, k:
zip
(
*
([
iter
(a)]
*
k))
>>> group_adjacent(a,
3
)
[(
1
,
2
,
3
), (
4
,
5
,
6
)]
>>> group_adjacent(a,
2
)
[(
1
,
2
), (
3
,
4
), (
5
,
6
)]
>>> group_adjacent(a,
1
)
[(
1
,), (
2
,), (
3
,), (
4
,), (
5
,), (
6
,)]
>>>
# Using slices
>>>
from
itertools
import
islice
>>> group_adjacent
=
lambda
a, k:
zip
(
*
(islice(a, i,
None
, k)
for
i
in
range
(k)))
>>> group_adjacent(a,
3
)
[(
1
,
2
,
3
), (
4
,
5
,
6
)]
>>> group_adjacent(a,
2
)
[(
1
,
2
), (
3
,
4
), (
5
,
6
)]
>>> group_adjacent(a,
1
)
[(
1
,), (
2
,), (
3
,), (
4
,), (
5
,), (
6
,)]
使用zip & iterators实现推拉窗(n-grams)
>>>
from
itertools
import
islice
>>>
def
n_grams(a, n):
... z
=
(islice(a, i,
None
)
for
i
in
range
(n))
...
return
zip
(
*
z)
...
>>> a
=
[
1
,
2
,
3
,
4
,
5
,
6
]
>>> n_grams(a,
3
)
[(
1
,
2
,
3
),
(
2
,
3
,
4
), (
3
,
4
,
5
),
(
4
,
5
,
6
)]
>>> n_grams(a,
2
)
[(
1
,
2
), (
2
,
3
),
(
3
,
4
), (
4
,
5
),
(
5
,
6
)]
>>> n_grams(a,
4
)
[(
1
,
2
,
3
,
4
),
(
2
,
3
,
4
,
5
),
(
3
,
4
,
5
,
6
)]
使用zip反相字典对象
>>> m
=
{
"a"
:
1
,
"b"
:
2
,
"c"
:
3
,
"d"
:
4
}
>>> m.items()
[(
"a"
,
1
), (
"c"
,
3
), (
"b"
,
2
), (
"d"
,
4
)]
>>>
zip
(m.values(), m.keys())
[(
1
,
"a"
), (
3
,
"c"
), (
2
,
"b"
), (
4
,
"d"
)]
>>> mi
=
dict
(
zip
(m.values(), m.keys()))
>>> mi
{
1
:
"a"
,
2
:
"b"
,
3
:
"c"
,
4
:
"d"
}
枚举函数enumerate
enumerate(iterable
[,start=0])
如果你以前写过 C 语言,那么你可能会这么写:
for i in range(len(list)): # do stuff with list[i], for example, print it print i, list[i]
噢,不用那么麻烦!你可以使用 enumerate() 来提高可读性。
for i, item in enumerate(list): # so stuff with item, for example print it print i, item
利用enumerate()函数,可以在每次循环中同时得到下标和元素
S = 'abcdef' for (index,char) in enumerate(S): print index print char
实际上,enumerate()在每次循环中,返回的是一个包含两个元素的定值表(tuple),两个元素分别赋予index和char
enumerate函数还可以接收第二个参数。
>>> list(enumerate('abc', 1))
[(1, 'a'), (2, 'b'), (3, 'c')]
简单服务器
你是否想要快速方便的共享某个目录下的文件呢?
# Python2
python -m SimpleHTTPServer# Python 3
python3 -m http.server
这样会为启动一个服务器。
最大 & 最小元素(heapq.nlargest and heapq.nsmallest)
>>> a
=
[random.randint(
0
,
100
)
for
__
in
xrange
(
100
)]
>>> heapq.nsmallest(
5
, a)
[
3
,
3
,
5
,
6
,
8
]
>>> heapq.nlargest(
5
, a)
[
100
,
100
,
99
,
98
,
98
]
使用C风格的大括号代替Python缩进来表示作用域
from
__future__ import
braces
对Python表达式求值
我们都知道eval函数,但是我们知道literal_eval函数么?
import ast
my_list = ast.literal_eval(expr)
来代替以下这种操作:
expr = "[1, 2, 3]"
my_list = eval(expr)
对象自检
在Python 中你可以通过dir() 函数来检查对象。正如下面这个例子:
>>> foo = [1, 2, 3, 4]
>>> dir(foo)
['__add__', '__class__', '__contains__',
'__delattr__', '__delitem__', '__delslice__', ... ,
'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
[python模块导入及属性]
三元运算
三元运算是if-else 语句的快捷操作,也被称为条件运算。这里有几个例子可以供你参考,它们可以让你的代码更加紧凑,更加美观。
[on_true] if [expression] else [on_false]
x, y = 50, 25
small = x if x < y else y
all(iterable)
如果可迭代的对象(数组,字符串,列表等,下同)中的元素都是 true (或者为空)的话返回 True 。
_all = True for item in iterable: if not item: _all = False break if _all: # do stuff
更简便的写法是:
if all(iterable): # do stuff
any(iterable)
如果可迭代的对象中任何一个元素为 true 的话返回 True 。如果可迭代的对象为空则返回False 。
_any = False for item in iterable: if item: _any = True break if _any: # do stuff
更简便的写法是:
if any(iterable): # do stuff
cmp(x,y)
比较两个对象 x 和 y 。 x<y 的时候返回负数,x==y 的时候返回 0,x>y 的时候返回正数。
def compare(x,y): if x < y: return -1 elif x == y: return 0 else: return 1
你完全可以使用一句 cmp(x, y) 来替代。
dict([arg])
使用 arg 提供的条目生成一个新的字典。
arg 通常是未知的,但是它很方便!比如说,如果我们想把一个含两个元组的列表转换成一个字典,我们可以这么做。
l = [('Knights', 'Ni'), ('Monty', 'Python'), ('SPAM', 'SPAAAM')] d = dict() for tuple in l: d[tuple[0]] = tuple[1] # {'Knights': 'Ni', 'Monty': 'Python', 'SPAM': 'SPAAAM'}
或者这样:
l = [('Knights', 'Ni'), ('Monty', 'Python'), ('SPAM', 'SPAAAM')] d = dict(l) # {'Knights': 'Ni', 'Monty': 'Python', 'SPAM': 'SPAAAM'}
isinstance(object, classinfo)
如果 object 参数是 classinfo 参数的一个实例或者子类(直接或者间接)的话返回 True 。
当你想检验一个对象的类型的时候,第一个想到的应该是使用 type() 函数。
if type(obj) == type(dict): # do stuff elif type(obj) == type(list): # do other stuff ...
或者你可以这么写:
if isinstance(obj, dict): # do stuff elif isinstance(obj, list): # do other stuff ...
pow(x,y[,z])
返回 x 的 y 次幂(如果 z 存在的话则以z 为模)。
如果你想计算 x 的 y 次方,以 z 为模,那么你可以这么写:
mod = (x ** y) % z
但是当 x=1234567, y=4567676, z=56 的时候我的电脑足足跑了 64 秒!
不要用 ** 和 % 了,使用 pow(x,y,z) 吧!这个例子可以写成pow(1234567,4567676,56) ,只用了 0.034 秒就出了结果!
Local函数
想让代码看起来更加简明,可以利用 Python 的内建函数 locals() 。它返回的字典对所有局部变量的名称与值进行映射。
def test(c): a = {} a[0] = 3 b = 4 print(locals()) if __name__ == '__main__': test(8) {'c': 8, 'b': 4, 'a': {0: 3}}
Note:使用 locals() 时要注意是它将包括 所有 的局部变量,它们可能比你想访问的要多。也包括传入函数的参数。
python repr() \str() 函数
将任意值转为字符串:将它传入repr() 或str() 函数。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常)
某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。字符串和浮点数,有着独特的解读方式。
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'" # The repr() of a string adds string quotes and backslashes
operator.itemgetter函数
operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号)。
a = [1,2,3]
>>> b=operator.itemgetter(1) //定义函数b,获取对象的第1个域的值
>>> b(a)
2
>>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值
>>> b(a)
(2, 1)
Note:operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
python内置排序函数
sorted(iterable,cmp,key,reverse)
Python内置的排序函数sorted可以对list或者iterator进行排序,官网文档见:http://docs.python.org/2/library/functions.html?highlight=sorted#sorted,该函数原型为:
sorted(iterable[, cmp[, key[, reverse]]])
参数解释:
iterable指定要排序的list或者iterable;
cmp为带两个参数的比较函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数;
key 是带一个参数的比较函数;
reverse升降序选择,为False或者True(降序);
axis:指定轴进行排序;
通常用法:list.sort(axis = None, key=lambda
x:x[1],
reverse = True)
例子:
(1)用cmp函数排序
>>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)]
>>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1]))
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]
(2)用key函数排序
>>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)]
>>> sorted(list1,key = lambda list1: list1[1])
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]
(3)用reverse排序
>>> sorted(list1,reverse = True)
[('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]
(4)用operator.itemgetter函数排序
>>> from operator import itemgetter
>>> sorted(list1, key=itemgetter(1))
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]
>>> sorted(list1, key=itemgetter(0))
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]
(5)多级排序
>>> sorted(list1, key=itemgetter(0,1))
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]
[https://wiki.python.org/moin/HowTo/Sorting/]
[Python中的sorted函数以及operator.itemgetter函数]
from:http://blog.csdn.net/pipisorry/article/details/44755423
ref:Python 内置函数
Python built-in functions are awesome. Use them!
Python: Tips, Tricks and Idioms
30 Python Language Features and Tricks You May Not Know About
python函数: 内置函数的更多相关文章
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- 如何查看Python的内置函数
经常调用的时候不知道python当前版本的内置函数是哪些,可以用下面的指令查看: C:\Users\Administrator>python Python 2.7.11 (v2.7.11:6d1 ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- python(day16)内置函数,匿名函数
# add = lambda x,y:x+y # print(add(1,2)) # dic={'k1':10,'k2':100,'k3':30} # def func(key): # return ...
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- Python的内置函数
python的内置函数一共有68个,下面将简单介绍各个函数的功能. abs() dict() help() min() setattr() all() dir() hex() next() slice ...
- python 匿名函数&内置函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...
- python print()内置函数
啦啦啦啦啦啦,我又来了,学习任何东西都得坚持,我一定的好好加油!!! 今天来说说print()函数,前边我们已经用过好好多次啦,现在来学习哈吧!!! Python的内置函数,print() print ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
随机推荐
- iptables_forward
FORWARD 好了,我们接着往下走,这个包已经过了两个PREROUTING链了,这个时候,出现了一个分支转折的地方,也就是图中下方的那个菱形(FORWARD),转发!这里有一个对目的地址的判断(这里 ...
- CF700C (枚举+tarjan)
Problem Break up (CF700C) 题目大意 给一张n个点,m条边的无向图,有边权,和起点S,终点T. (n<=1000 , m<=30000) 要求最多割掉2条边,使得S ...
- WPF Step By Step 系列 - 开篇 ·
WPF Step By Step 系列 - 开篇 公司最近要去我去整理出一个完整的WPF培训的教程,我刚好将自己学习WPF的过程和经验总结整理成笔记的方式来讲述,这里就不按照书上面的东西来说了,书本上 ...
- Cache
1.Cache中的块与主存储器中的块时按照什么样的规则建立对应关系的? 2.在这种对应关系下,主存地址又是如何变换成Cache地址的? Cache信息: 1.数据Cache和指令Cache是分开还是统 ...
- java serializable深入了解
声明:本文转自csdn论坛,原文地址为http://blog.csdn.net/zdw890412/article/details/7380069,对原作者表示感谢! 引言 将 Java 对象序列化为 ...
- Phonegap开发的前后台数据交互
在用Phonegap开发时,需要进行前后台数据交互,在网上找资料,很多东西让人一头雾水,最后借鉴了下面的博客: http://blog.sina.com.cn/s/blog_681929ae01017 ...
- css 属性积累
1. letter-spacing:6px; //属性增加或减少字符间的空白(字符间距) 2. cursor // 鼠标移上去的鼠标状态 属性值有: ...
- Codeforces Round #366 (Div. 2) A
A. Hulk time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- 一个好用的Log管理类
public class L { private static String className; //所在的类名 private static String methodName; //所在的方法名 ...
- ctypes 模块
ctypes赋予了python类似于C语言一样的底层操作能力,通过ctypes模块可以调用动态链接库中的导出函数.构建复杂的c数据类型. ctypes提供了三种不同的动态链接库加载方式:cdll(), ...