一、罗列全部的内置函数

二、range、xrange(迭代器)

无论是range()还是xrange()都是Python里的内置函数。这个两个内置函数最常用在for循环中。例如:

>>> for i in range(5):

... print i

...

0

1

2

3

4

>>> for i in xrange(5):

... print i

...

0

1

2

3

4

>>>

range()和xrange() 在Python 2里是两种不同的实现。但是在Python 3里,range()这种实现被移除了;

保留了xrange()的实现,且将xrange()重新命名成range()。

首先,我们来看Python 2里range()。它是一个内置函数,这个函数用于创建整数等差数列。因此它

常被用于for循环。下面是range()的官方帮助文档。

Help on built-in function range in module __builtin__:

range(...)

range(stop) -> list of integers

range(start, stop[, step]) -> list of integers

Return a list containing an arithmetic progression of integers.

range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.

When step is given, it specifies the increment (or decrement).

For example, range(4) returns [0, 1, 2, 3]. The end point is omitted!

These are exactly the valid indices for a list of 4 elements.

(END)

从官方帮助文档,我们可以看出下面的特性:

1、内置函数(built-in)

2、接受3个参数分别是start, stop和step(其中start和step是可选的,stop是必需的)

3、如果没有指定start,默认从0开始(Python都是从0开始的)

4、如果没有指定step,默认step是1。(step不能是0,如果指定step为0,“ValueError: range() step argument must not be zero”

将会被抛出。

额外的特性:

1、当step为正数时,start应该小于stop,否则将生成[ ],即空数列。

>>> range(-3)

[]

>>> range(5, 1)

[]

>>> range(1,1)

[]

2、当step为负数时,start应该大于stop,否则将生成[ ],即空数列。

这两个特性说明range()可以生成递增和递减的数列。

下面是range()生成数列的例子:

>>> range(5)

[0, 1, 2, 3, 4]

>>> range(1,8,3)

[1, 4, 7]

>>> range(0, -10)

[]

>>> range(0, -10, -2)

[0, -2, -4, -6, -8]

>>>

接下来看看xrange()。 xrange()虽然也是内置函数,但是它被定义成了Python里一种类型(type),

这种类型就叫xrange。我们从Python 2的interactive shell里很容易看到这点。

>>> range

>>> xrange

>>>

我们再来看看xragne的官方帮助文档:

Help on class xrange in module __builtin__:

class xrange(object)

| xrange(stop) -> xrange object

| xrange(start, stop[, step]) -> xrange object

|

| Like range(), but instead of returning a list, returns an object that

| generates the numbers in the range on demand. For looping, this is

| slightly faster than range() and more memory efficient.

|

| Methods defined here:

|

| __getattribute__(...)

| x.__getattribute__('name') <==> x.name

|

| __getitem__(...)

| x.__getitem__(y) <==> x[y]

|

| __iter__(...)

| x.__iter__() <==> iter(x)

|

| __len__(...)

| x.__len__() <==> len(x)

|

| __reduce__(...)

|

| __repr__(...)

| x.__repr__() <==> repr(x)

|

| __reversed__(...)

| Returns a reverse iterator.

|

| ----------------------------------------------------------------------

| Data and other attributes defined here:

|

| __new__ =

| T.__new__(S, ...) -> a new object with type S, a subtype of T

(END)

从文档里可以看出,xrange和range的参数和用法是相同的。只是xrange()返回的不再是一个数列,而是一个

xrange对象。这个对象可以按需生成参数指定范围内的数字(即元素)。由于xrange对象是按需生成单个的

元素,而不像range那样,首先创建整个list。所以,在相同的范围内,xrange占用的内存空间将更小,xrange

也会更快。实际上,xrange由于是在循环内被调用时才会生成元素,因此无论循环多少次,只有当前一个元素

占用了内存空间,且每次循环占用的都是相同的单个元素空间。我们可以粗略的认为,相同n个元素的话,range占

用的空间是xrange的n倍。因此,在循环很大情况下,xrange的高效率和快速将表现的很明显。我们可以用timeit

来测试一下range和xrange的执行时间。

>>> timeit.timeit('for i in range(10000000): pass',number=1)

0.49290895462036133

>>> timeit.timeit('for i in xrange(10000000): pass',number=1)

0.2595210075378418

在大量循环的条件下,可以看到xrange的高效率是很明显的。

总结一下:

1、range()返回整个list。

2、xrange()返回的是一个xrange object,且这个对象是个iterable。

3、两者都用与for循环。

4、xrange()占用更少的内存空间,因为循环时xrange()只生成当前的元素,不像range()一开始就成生成完整的list。

这就是在Python 2里range和xrange的相同点和区别。

那么在Python 3里,我们在前面提到了range()被移除了,xrange()被重新命名成了range()。它们之间有区别吗?

请看下面的代码

Python 2的xrange()

Python 2.7.6 (default, Dec 5 2013, 23:54:52)

[GCC 4.6.3] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> x = xrange(5)

>>> x

xrange(5)

>>> x[:]

Traceback (most recent call last):

File "", line 1, in

TypeError: sequence index must be integer, not 'slice'

>>> x[-1]

4

>>> list(x)

[0, 1, 2, 3, 4]

>>> dir(x)

['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__len__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

>>>

Python 3的range()

Python 3.3.4 (default, Feb 23 2014, 23:07:23)

[GCC 4.6.3] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> x = range(5)

>>> x

range(0, 5)

>>> x[:]

range(0, 5)

>>> x[:3]

range(0, 3)

>>> list(x)

[0, 1, 2, 3, 4]

>>> x[-1]

4

>>> dir(x)

['__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__','__repr__', '__reversed__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop']

>>>

很明显,range object在Python里增加了新的attributes,'count', 'index', 'start', 'step', 'stop',

且能支持slicing。Python 3的range()在xrange()的基础上变得更强大了。

请理解下面这句话:

The advantage of therangetype over a regularlistortupleis that arangeobject will always take the same (small) amount of memory, no matter the size of the range it represents (as it only stores thestart,stopandstepvalues, calculating individual items and subranges as needed).

到这里,我们应该比较清楚range和xrange的区别了

三、yield

deffab(max):

n, a, b= 0, 0, 1

while n

a, b = b, a +b

n= n + 1c= fab(10)print(c.__next__()) # python 3.x 已经没有 next()方法print(c.__next__())print(c.__next__())print(c.__next__())#for i in fab(10):#print(i)

python函数大全和意思_python 之 内置函数大全相关推荐

  1. python函数打印乘法表_Python中内置函数来打印数学乘法表

    1.Python内置函数range的使用 range函数的作用可以理解取一个范围如下: >>>range(5) # :取一个在5的范围>range(0, 5) # 那么在这里取 ...

  2. python函数速查手册_Python进阶-内置函数大全

    #1.abs() 绝对值或复数的模abs(-1) >>> 1 #2.all() 接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回Falseall([1,2,3] ...

  3. python通过内置函数测试对象类型_Python的内置函数

    函数名 功能描述 示例 abs() 返回数字的绝对值 abs(-45) divmod() 把除数和余数运算结合起来,返回一个包含商和余数的元组 divmod(7,2) 返回:(3,1) raw_inp ...

  4. python zip函数用于for循环_python zip 内置函数的使用

    定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组 ...

  5. python常用内置函数可以操作字符串_Python常用内置函数(二)

    字符串处理方法 1. str.capitalize: 将字符串首字母大写str.capitalize('abc')'Abc' 2. str.replace(old,new,[,count]): 替换字 ...

  6. python __call__一般用在哪些地方_Python __call__内置函数的作用和用法

    开学了进入了实验室,需要协助大师兄做事,主要是OpenStack中的代码解析,但是涉及很多python高级用法,一时间有点麻烦,在做项目的同时慢慢更新博客.这次先写一下__call__的用法,因为经常 ...

  7. [转载] Python列表排序 list.sort方法和内置函数sorted

    参考链接: Python中的函数 Python列表排序 list.sort方法和内置函数sorted 很多时候我们获取到一个列表后,这个列表并不满足我们的需求,我们需要的是一个有特殊顺序的列表. 这时 ...

  8. Python列表排序 list.sort方法和内置函数sorted

    Python列表排序 list.sort方法和内置函数sorted 很多时候我们获取到一个列表后,这个列表并不满足我们的需求,我们需要的是一个有特殊顺序的列表. 这时候就可以使用list.sort方法 ...

  9. Python中lambda详解(包括内置函数map、reduce、filter、sorted、max)

    文章目录 一.lambda是什么? 1.lambda语法 2.语法详解 二.lambda的使用 1.定义 2.调用 3.替换 4.作返回值 三.lambda作参数 1.map函数 2.reduce函数 ...

最新文章

  1. 兑换量子计算机,阅读 | 【量子计算机】构造置换量子门
  2. 如何删除需要管理员权限才能删除的文件夹
  3. hibernate教程--二级缓存详解
  4. “苹果光环”褪色后,瑞声靠什么坐稳头把交椅?
  5. opencv 设置视频帧的分辨率“无效”
  6. 在多线程中使用spring的bean
  7. redhat 9.0 mysql 配置_RedHat 9.0下Apache+PHP+MySQL服务器安装配置
  8. 智能会议系统(7)---实时音视频技术难点及解决方案
  9. 推挽电路原理及应用-上N下P以及下N上P
  10. Python利用GUI界面制作B站弹幕分析工具
  11. web网页设计期末课程大作业 基于HTML+CSS+JavaScript响应式环保科技公司网站模板(环保主题网站设计)
  12. 小米9开发版自带root吗_小米9root权限获取教程
  13. leafy tree
  14. 西文是指什么,【英语中的复合句是指什么具体来说是指哪些类的语法知识?】作业帮...
  15. python去除图片背景(透明色)
  16. Windows文件搜索软件Everything
  17. pycharm使用ssh连接服务器(ubuntu)跑代码报错:“sudo+ssh: ……bash: line 0: cd: xxx/code: No such file or directory”
  18. 数字如潮人如水:在这个时代,你是要当算法,还是当数据?
  19. ant在linux下的配置
  20. 竟然还有人不知道IfluxDB是干嘛的???

热门文章

  1. Spring---------ThreadLocal(线程变量副本)
  2. BAT集体升级云事业部,这背后都藏着哪些“小心思”?
  3. framework调试
  4. ArcMap中的名称冲突问题
  5. 【搭建web服务器】以及web的所有配置
  6. selenium+ant+testng测试框架简单介绍
  7. 类似系统的UIActivityViewController显示方式的开源代码:HYActivityView
  8. tensorflow的tf.transpose()简单使用
  9. 通过WebBrowser使用Echats
  10. js判断只能输入数字或小数点