我是靠谱客的博主 痴情凉面,最近开发中收集的这篇文章主要介绍python 部分常用函数 + 循环对象 + 函数对象 + 动态类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Range():

         格式:Range( start , end , step )

1.      返回list

2.      List[ 0 ] 为start

3.      计数到end前停止,即不包含end

 

enumerate():

         格式:for ( index, char ) in enumerate( s )

1.      可在每次循环中同时得到下标和对应元素

2.      返回值为元组,包含index 和char

zip():

格式:zip( 参数1,参数2,……)

1. 参数为可迭代的对象,zip将各迭代对象的对应元素组合成一个tuple,最后返回这些tuple组成的list。若传入参数长度不等,则返回的list长度与最短参数的所含元素数相同

3. 可以用来进行矩阵转置操作:

操作也可以用列表推导得出:

两者间的区别在于返回的list对象中的 元素类型差别,zip得到tuple,表推导得到list


For:

1.      在for 循环内改变 i,实际循环量并不会改变

Center():

         格式:string.center( width [ , fillchar ] )

1.      若 string的长度小于width ,则在string 两端平均插入 fillchar(差奇数个则前端多1个fillchar)

2.      只返回一个临时字符串,原string并不改变

 

Count():

         格式: string.count( sub [ , start [ , end] ] )

1.      对于string,在其index的 start 到 end-1(即不包含end)中 查找 sub并返回其总数

2.      End 超出string的长度并不会无法执行

3.      Start的默认值为0,end默认值为len(string)

 

 

自定义函数

1.      关键字传递

可以用关键字来传递参数,不必局限于参数声明顺序,但关键字传递必须在位置传递之后

2.      有默认值的参数必须在没有的后面

3.      包裹传递:

格式:def func(* pos [,** key ] )

1. * pos 对应位置参数,** key 对应关键字参数

2. *pos 无参数读入,返回空元组,**key 无参数读入,返回空字典

3. 在未知要传递多少参数时使用


 

循环对象

生成器:

生成器(generator)的主要目的是构成一个用户自定义的循环对象。

生成器的编写方法和函数定义类似,只是在return的地方改为yield。生成器中可以有多个yield。当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield。生成器自身又构成一个循环器,每次循环使用一个yield返回的值。

 

表推导:

                   代码简单,实用价值高

    

 

函数对象

Lambda

                   格式:lambda参数1,参数2… :表达式

1.      Lambda生成一个函数对象,可以赋给func

2.      表达式只可以写一行

 

函数对象可作为参数传递

    

Map()

                   格式:func=map(函数对象 , list[ ] )

1.      Map( )是用 函数对象 对list中的每个元素进行操作

2.      如果有多个list,则对应的函数对象要有对应list个数的操作参数,多个list中的元素个数一般也要相同

3.      返回对象为一个进行操作后的list

 

Filter()

                   格式:filter(函数对象,list[ ] )

1.      将函数对象作用于list每个元素,若操作返回True,则该次操作后的元素被加入新的list中,否则,则过滤掉

Reduce( )

                   格式: reduce(函数对象funclist[ ] )

1.      要求函数对象中 要接受两个参数

2.      操作过程:先取出list中的第一个和第二个元素进行操作,将操作结果作为下次操作的 第一个参数,取list中的第三个元素作为 函数对象的 第二个参数,以此迭代下去   ,知道list中无剩余元素

 

动态类型

1.       引用和对象分离,是动态类型的核心。引用可以随时指向一个新的对象

第一个语句中,3是储存在内存中的一个整数对象。通过赋值,引用a指向对象3。

第二个语句中,内存中建立对象‘at’,是一个字符串(string)。引用a指向了'at'。此时,对象3不再有引用指向它。Python会自动将没有引用指向的对象销毁(destruct),释放相应内存。

2.      即使是多个引用指向同一个对象,如果一个引用值发生变化,那么实际上是让这个引用指向一个新的引用,并不影响其他的引用的指向。从效果上看,就是各个引  用各自独立,互不影响。

让a,b指向同一个对象 1,令a指向的一个新的对象3,这个过程中b指向的对象1没有发生变化,所以b的指向对象不变。

3.      但是如果指向不变,改变了指向对象本身呢?show the code:

原因何在呢?因为L1,L2的指向没有发生变化,依然指向那个表。表实际上是包含了多个引用的对象(每个引用是一个元素,比如L1[0],L1[1]..., 每个引用指向一个对象,比如1,2,3), 。而L1[0] = 10这一赋值操作,并不是改变L1的指向,而是对L1[0], 也就是表对象的一部份(一个元素),进行操作,所以所有指向该对象的引用都受到影响。

(与之形成对比的是,我们之前的赋值操作都没有对对象自身发生作用,只是改变引用指向。)

列表可以通过引用其元素,改变对象自身(in-placechange)。这种对象类型,称为可变数据对象(mutable object),词典也是这样的数据类型。

而像之前的数字字符串,不能改变对象本身,只能改变引用的指向,称为不可变数据对象(immutable object)。

我们之前学的元组(tuple),尽管可以调用引用元素,但不可以赋值,因此不能改变对象自身,所以也算是immutable object。

4.       从动态类型看函数的参数传递

a)        如果参数是不可变对象,参数传递类似C#中的值传递。

b)       如果参数是可变对象,则参数传递类似于C#中的传指针,函数内参数变化,有可能影响原对象

最后

以上就是痴情凉面为你收集整理的python 部分常用函数 + 循环对象 + 函数对象 + 动态类型的全部内容,希望文章能够帮你解决python 部分常用函数 + 循环对象 + 函数对象 + 动态类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部