python内置了很多函数,方便我们在写程序的时候调用,在ython 2.7 的所有内置函数共有80个。熟练记住和使用这些内置函数,将大大提高写Python代码的速度和代码的优雅程度。

以下代码示例用的是ipython,一个比官方解释器好很多的解释器,值的学习和使用。

数学相关的内置函数

  • abs(x) 返回一个数字的绝对值
In [18]: abs(3.14)
Out[18]: 3.14 In [19]: abs(-3.14)
Out[19]: 3.14
  • complex(real[, imag]) 生成一个复数
In [135]: complex(1,3)
Out[135]: (1+3j)
  • divmod(x, y) 返回x除以y的商和余数
In [143]: divmod(12, 7)
Out[143]: (1, 5)
  • max(iterable[, key]) 返回一个序列的最大元素
In [157]: max([(1,2,3), (4,5,6), (23,4,1,)], key=lambda a: a[-1])
Out[157]: (4, 5, 6) In [158]: max(1,2,3,4,4,5)
Out[158]: 5 In [159]: max([(1,2,3), (4,5,6), (23,4,1,)])
Out[159]: (23, 4, 1) In [160]: max([(1,2,3), (4,5,6), (23,4,1,)], key=lambda a: a[-1])
Out[160]: (4, 5, 6) In [161]: max([{'age':10, 'name': 'aaa'}, {'age': 12, 'name': 'bb'}], key=lambda a: a['age'])
Out[161]: {'age': 12, 'name': 'bb'}
  • min(iterable[, key]) 返回一个序列的最小元素
    参见上面的max() 函数
  • pow(x, y[, z]) 返回x的y次幂,如果有参数z则返回幂除以z的余数(对z取模)
In [166]: pow(2,3)
Out[166]: 8 In [167]: pow(2,3,5)
Out[167]: 3
  • round(number[, ndigits]) 返回一个数的四舍五入值,给出ndigits则四舍五入到第n位小数
In [170]: round(3.45)
Out[170]: 3.0 In [171]: round(3.55)
Out[171]: 4.0 In [172]: round(3.55345, 3)
Out[172]: 3.553
  • sum(sequence[, start]) 对一个数字序列求和,start为起始位置,默认从0开始

    In [175]: sum([1,2,3,4])
    Out[175]: 10

数字、字符转换

  • bin(number), hex(number), oct(number)
    把一个数字转换成二进制、十六进制、八进制字符串

    In [204]: print bin(20), hex(16), oct(9)
    0b10100 0x10 011
  • bool(x) 如果x是真则返回True,否则返回False
In [184]: print bool(3), bool('a')
True True In [185]: print bool(0), bool(''), bool(None)
False False False
  • chr(i) 把一个整数转换为ascii码字符, 0<= i < 256
In [188]: chr(320)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-188-5b2996ffe50c> in <module>()
----> 1 chr(320) ValueError: chr() arg not in range(256) In [189]: chr(65)
Out[189]: 'A' In [190]: chr(0)
Out[190]: '\x00'
  • unichr(i) 把一个整数转换为Unicode字符, 0 <= i <= 0x10ffff
In [225]: unichr(1245)
Out[225]: u'\u04dd'
  • ord(c) 把一个ascii码字符转换为整数
In [192]: ord('a')
Out[192]: 97 In [193]: ord('\x23')
Out[193]: 35
  • float(x), int(x), long(x) 浮点数、整数、长整数之间的转换
In [196]: print float(''), float(13)
13.0 13.0 In [197]: print int(''), int(14)
14 14 In [198]: print long(''), long(15)
15 15
  • format(value[, format_spec]) 对value按照format_spec格式化
In [212]: format(123, '05d')
Out[212]: ''

以上等同于 print ‘%05d’ % 123

  • hash(ojbect) 对object计算hash值
In [218]: hash(123)
Out[218]: 123 In [219]: hash('abc')
Out[219]: 1453079729188098211
  • str(object=’’) 把一个对象转换成字符串:
In [221]: str(123)
Out[221]: '' In [222]: str([1,2,3])
Out[222]: '[1, 2, 3]' In [223]: str({'a': 1, 'b': 2})
Out[223]: "{'a': 1, 'b': 2}"

输入输出

  • file(name[, mode[, buffering]]), open 打开一个文件
In [251]: file('abc.txt', 'w')
Out[251]: <open file 'abc.txt', mode 'w' at 0x7f93e727a660> In [252]: open('abc.txt', 'w')
Out[252]: <open file 'abc.txt', mode 'w' at 0x7f93e727a780>
  • input([prompt]), raw_input() 从终端输入信息
In [253]: input('pls input a number >>')
pls input a number >>123
Out[253]: 123

序列处理

  • all(iterable) 如果一个序列所有值都为真就返回True,否则返回False
  • any(iterable) 如果一个序列至少有一个为真就返回True, 否则False
In [255]: all([1,2,3,4])
Out[255]: True In [256]: all([1,2,3,4, 0])
Out[256]: False In [257]: any([1,2,3,4, 0])
Out[257]: True
  • enumerate(iterable[, start]) 遍历一个序列的元素及其索引
In [261]: for i, value in enumerate(['a', 'b', 'c']):
.....: print i, value
.....:
0 a
1 b
2 c
  • filter(function or None, squence) 返回满足function(item)为True的元素
In [263]: filter(lambda x: x>3, [1,2,3,4,5])
Out[263]: [4, 5]
  • iter(collection) 返回一个对象的迭代器

读取文件的时候比较有用:

with open("mydata.txt") as fp:
for line in iter(fp.readline, "STOP"):
process_line(line)
  • len(object) 返回一个对象的元素个数
In [267]: len('abc'), len([1,2,3])
Out[267]: (3, 3)
  • map(function, sequence[, sequence, …]) 把一个函数应用于每一个元素并返回一个list
In [269]: map(lambda x: x+3, [1,2,3])
Out[269]: [4, 5, 6] In [270]: a = [1,2]; b = ['a', 'b']; c = ('x', 'y') In [271]: map(None, a, b, c)
Out[271]: [(1, 'a', 'x'), (2, 'b', 'y')]
  • reduce(function, sequence[, sequence, …]) 把函数作用于初始两个元素,并把返回值和下一个元素作为输入调用函数,依次迭代所有元素
In [281]: reduce(lambda a, b: a-b, [1,2,3])
Out[281]: -4
  • zip(seq1 [, seq2 […]]) -> [(seq1[0], seq2[0] …), (…)]
    把多个序列合并成一个序列list
In [283]: zip([1,2,3], ('a', 'b', 'c'))
Out[283]: [(1, 'a'), (2, 'b'), (3, 'c')]
  • range() xrange() 返回一个整数序列
In [274]: [x for x in xrange(10)]
Out[274]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [275]: [x for x in xrange(5, 10)]
Out[275]: [5, 6, 7, 8, 9] In [276]: [x for x in xrange(5, 10, 2)]
Out[276]: [5, 7, 9] In [277]: range(10)
Out[277]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [278]: range(5, 10)
Out[278]: [5, 6, 7, 8, 9] In [279]: range(5, 10, 2)
Out[279]: [5, 7, 9]
  • sorted(iterable, cmp=None, key=None, reverse=False) 对一个序列排序

可选参数cmp、key和reverse与list.sort()方法的参数含义相同(在可变的序列类型一节描述)。
cmp指定一个自定义的带有两个参数的比较函数(可迭代的元素),它应该根据第一个参数是小于、等于还是大于第二个参数返回负数、零或者正数:cmp=lambda x,y: cmp(x.lower(), y.lower())。默认值是None。
key指定一个带有一个参数的函数,它用于从每个列表元素选择一个比较的关键字:key=str.lower。默认值是None(直接比较元素)。
reverse是一个布尔值。如果设置为True,那么列表元素以反向比较排序。
通常情况下,key和reverse转换处理比指定一个等同的cmp函数要快得多。这是因为cmp为每个元素调用多次但是key和reverse只会触摸每个元素一次。使用functools.cmp_to_key()来转换旧式的cmp函数为key函数。

In [288]: sorted(d.items(), key=lambda a: a[1])
Out[288]: [('a', 3), ('b', 4)] In [289]: sorted(d.items(), key=lambda a: a[1], rev) In [289]: sorted(d.items(), key=lambda a: a[1], reverse=True)
Out[289]: [('b', 4), ('a', 3)] In [290]: sorted(d.items(), cmp=lambda a, b: cmp(a[1], b[1]))
Out[290]: [('a', 3), ('b', 4)]

数据结构

bytearray() dict() frozenset() list() set() tuple()
python里面常用的数据结构有列表(list)、字典(dict)、集合(set)、元组(tuple)

对象、类型

以下是一些类(class)和类型相关的函数,比较不常用,可以查看手册详细了解。
basestring() callable() classmethod() staticmethod() property() cmp() compile() delattr() getattr() setattr() hasattr() dir() globals() locals() vars() help() id() isinstance() issubclass() object() memoryview() repr() super() type() unicode() import() eval() execfile()

不重要的内置函数

apply() buffer() coerce() intern()

ipython

ipython是一个非常好的交互式python解释器,它查看一个函数或类的用法的方法有:

  • help(xxx)
  • xxx?
    查看一个类/对象的成员函数或变量时,在类或对象变量后面输入.后按tab键:
In [292]: import time

In [293]: time.
time.accept2dyear time.clock time.gmtime time.sleep time.struct_time time.tzname
time.altzone time.ctime time.localtime time.strftime time.time time.tzset
time.asctime time.daylight time.mktime time.strptime time.timezone In [293]: time.ti
time.time time.timezone In [293]: time.time?
Docstring:
time() -> floating point number Return the current time in seconds since the Epoch.
Fractions of a second may be present if the system clock provides them.
Type: builtin_function_or_method

文章来源于python学习笔记:www.yuanrenxue.com

熟记这些python内置函数,你离大佬就不远了的更多相关文章

  1. python内置函数

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

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

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

  3. Python基础篇【第2篇】: Python内置函数(一)

    Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...

  4. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  5. Python内置函数进制转换的用法

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...

  6. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

  7. Python内置函数(61)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string ...

  8. 那些年,很多人没看懂的Python内置函数

    Python之所以特别的简单就是因为有很多的内置函数是在你的程序"运行之前"就已经帮你运行好了,所以,可以用这个的特性简化很多的步骤.这也是让Python语言变得特别的简单的原因之 ...

  9. Python 内置函数笔记

    其中有几个方法没怎么用过, 所以没整理到 Python内置函数 abs(a) 返回a的绝对值.该参数可以是整数或浮点数.如果参数是一个复数,则返回其大小 all(a) 如果元组.列表里面的所有元素都非 ...

随机推荐

  1. django模板--循环控制标签

    循环控制标签 在django模板中可以通过循环控制标签对列表进行迭代,循环控制标签又称for标签,语法格式如下: {% for value in value_list %} {{ value }} { ...

  2. laravel的定时任务

    首先在laravel项目命令创建: php artisan make:command TestCommand 会在App\Console\Commands文件下看到TestCommand.php文件, ...

  3. hdoj2594(kmp算法next数组的应用)

    题目链接:https://vjudge.net/problem/HDU-2594 题意:给定两个字符串s1.s2,求s1的前缀和s2的后缀的最长公共部分. 思路: 将s1和s2连接后求nex数组即可, ...

  4. json 和对象互相转换

    json 和对象互相转换 导入 Jar 包: import com.fasterxml.jackson.databind.ObjectMapper; Maven 地址: <!-- https:/ ...

  5. C5. Spring 服务的注册与发现(Spring Cloud Eureka)

    [概述] Eureka 作为 Spring Cloud 分布式解决方案中重要的一环,实现了服务的注册与发现等功能.Eureka 包括 Eureka Server 和 Eureka Client,具体的 ...

  6. 笔记-10:处理时间的标准库-time库

    1.time库介绍 主要用来处理时间的标准库. time库提供了系统级精确计时器的计时功能,可以用来分析程序性能,也可让程序暂停运行时间. time库的功能主要分为:时间处理.时间格式化.计时. 2. ...

  7. MongoDB 逻辑运算符

    逻辑与   $and:要求满足所有查询条件 ,否则返回空 语法:db.集合名.find{ $and: [ { <expression1> }, { <expression2>  ...

  8. Python单元测试笔记

    单元测试根据级别不同可分为:单元测试.集成测试.系统测试.验收测试.回归测试 单元测试的更能特点:对代码最基本单元(函数.方法)的测试. 给予特定条件判断结果是否符合预期 相对整个程序的测试,单元测试 ...

  9. docker相关--dockerd日志设置

    背景 线上容器dockerd的后台程序打印了超过几十G的日志 Docker daemon日志的位置: Docker daemon日志的位置,根据系统不同各不相同. Ubuntu - /var/log/ ...

  10. Sonya and Bitwise OR CodeForces - 1004F (线段树,分治)

    大意: 给定序列$a$, 给定整数$x$. 两种操作(1)单点修改 (2)给定区间$[l,r]$,求有多少子区间满足位或和不少于$x$. 假设不带修改. 固定右端点, 合法区间关于左端点单调的. 可以 ...