python数据类型和3个重要函数
Python中所有变量都是值的引用,也就说变量通过绑定的方式指向其值。 而这里说的不可变指的是值的不可变。 对于不可变类型的变量,如果要更改变量,则会创建一个新值,把变量绑定到新值上,而旧值如果没有被引用就等待垃圾回收。不可变的类型还有一个特性,就是可以计算其hash值,这样才能进一步作为字典的key。可变类型数据对对象操作的时候,不需要再在其他地方申请内存,只需要在此对象后面连续申请(+/-)即可,也就是它的address会保持不变,但区域会变长或者变短。
不可变类型包括:int string float tuple
可变类型包括:list dict
1、list列表
列表数据类型还有其它一些方法。下面是列表对象的所有方法:
insert(i, x)    ---- 在指定位置插入一项。第一自变量是要在哪一个元素前面插入,用下 标表示。例如,a.insert(0, x)在列表前面插入,a.insert(len(a), x)等价于a.append(x) 。
 append(x)    ---- 等价于a.insert(len(a), x)
 index(x)    ---- 在列表中查找值x然后返回第一个值为x的元素的下标。没有找到时出错。
 remove(x)    ---- 从列表中删去第一个值为x的元素,找不到时出错。
 del        ---- 可以删除一个变量
 sort()        ---- 对列表元素在原位排序。注意这个方法改变列表,而不是返回排序后的列表。
 reverse()    ---- 把列表元素反序。改变列表。
 count(x)    ---- 返回x在列表中出现的次数。
下例使用了所有的列表方法:
 
 >>> a = [66.6, 333, 333, 1, 1234.5]
 
 >>> print a.count(333), a.count(66.6), a.count('x')
 
 2 1 0
 
 >>> a.insert(2, -1)
 
 >>> a.append(333)
 
 >>> a
 
 [66.6, 333, -1, 333, 1, 1234.5, 333]
 
 >>> a.index(333)
 
 1
 
 >>> a.remove(333)
 
 >>> a
 
 [66.6, -1, 333, 1, 1234.5, 333]
 
 >>> a.reverse()
 
 >>> a
 
 [333, 1234.5, 1, 333, -1, 66.6]
 
 >>> a.sort()
 
 >>> a
 
 [-1, 1, 66.6, 333, 333, 1234.5]
Python中有一些函数程序设计风格的东西,例如前面我们看到的lambda形式。关于列表有 三个非常有用的内置函数:
 filter(), map()和reduce()。
 
 
 
 “filter(函数, 序列)”返回一个序列(尽可能与原来同类型),序列元素是原序列中由 指定的函数筛选出来的那些,筛选规则是“函数(序列元素)=true”。filter()可以用来取出 满足条件的子集。例如,为了计算一些素数:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
 
 ...
 
 >>> filter(f, range(2, 25))
 
 [5, 7, 11, 13, 17, 19, 23]
“map(函数,序列)”对指定序列的每一项调用指定的函数,结果为返回值组成的列表。map() 可以对序列进行隐式循环。例如,要计算三次方,可用:
>>> def cube(x): return x*x*x
 
 ...
 
 >>> map(cube, range(1, 11))
 
 [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
可以有多个序列作为自变量,这时指定的函数必须也有相同个数的自变量,函数从每个序 列分别取出对应元素作为自变量进行调用(如果某个序列比其它的短则取出的值是None)。 如果指定的函数是None,map()把它当成一个返回自己的自变量的恒同函数。在函数用None的 情况下指定多个序列可以把多个序列搭配起来,比如“map(None, list1, list2)”可以把两 个列表组合为一个成对值的列表。见下例:
>>> seq = range(8)
 
 >>> def square(x): return x*x
 
 ...
 
 >>> map(None, seq, map(square, seq))
 
 [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25), (6, 36), (7, 49)]
“reduce(函数, 序列)”用来进行类似累加这样的操作,这里的函数是一个两个子变量的 函数,reduce()先对序列的前两项调用函数得到一个结果,然后对结果和序列下一项调用函 数得到一个新结果,如此进行到序列尾部。例如,要计算1到10的和:
>>> def add(x,y): return x+y
 
 ...
 
 >>> reduce(add, range(1, 11))
 
 55
如果序列中只有一个值则返回这个值,序列为空时会产生例外。可以指定第三个自变量作 为初始值。有初始值时对空序列函数将返回初始值,否则函数先对初始值和序列第一项作用 ,然后对结果和序列下一项作用,如此进行到序列尾。例如:
>>> def sum(seq):
 
 ...     def add(x,y): return x+y
 
 ...     return reduce(add, seq, 0)
 
 ...
 
 >>> sum(range(1, 11))
 
 55
 
 >>> sum([])
 
 0
python数据类型和3个重要函数的更多相关文章
- 数据类型和typeof操作符
		
虽然学习js有一段时间了,但是对js的基础语法却是有些生疏.最近在看jquery源码,决定随带总结一些基础的语法知识.今天总结一下数据类型和typeof,这在写js的时候,是不得不知道的知识. 数据类 ...
 - Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)
		
Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.S ...
 - python数据类
		
前言 之前有写过一篇python元类的笔记,元类主要作用就是在要创建的类中使用参数metaclass=YourMetaclass调用自定义的元类,这样就可以为所有调用了这个元类的类添加相同的属性了. ...
 - Java数据类型和MySql数据类型对应一览
		
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
 - SQL数据类型和C#数据类型间的转换
		
今天看到SQL数据类型和C#数据类型间的转换,前人留下的. <?xml version="1.0" encoding="utf-8" ?> < ...
 - MySql数据类型和Java数据类型对应一览
		
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
 - Java数据类型和MySql数据类型对应一览 [转]
		
类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.String 12 CHAR N ...
 - mysql数据类型和java数据类型匹配
		
Java数据类型和MySql数据类型对应一览 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java. ...
 - python小白——进阶之路——day2天-———数据类型和Number类型和str字符串
		
### -python的六大标准数据类型(1)Number 数字类型(int float bool complex)(2)String 字符串类型(3)List 列表类型(4)Tuple 元组类型(5 ...
 
随机推荐
- iOS截屏代码
			
转载自:http://m.open-open.com/m/code/view/1420469506375 1.普通界面 /** *截图功能 */ -(void)screenShot{ UIGraphi ...
 - 读书笔记之深入分析Java Web技术内幕
			
章节: 1 B/SB/S的优点: 客户端使用统一的浏览器(Browser) ,浏览器的统一带来了操作的统一,无论使用什么服务,因为浏览器是相同的,所以操作类似.客户使用简单了.服务端开发简化; 使用统 ...
 - tomcat上servlet程序的配置与处理servlet请求过程
			
手动配置: tomcat服务器下web项目的基本目录结构 |-tomcat根目录 |-webapps |-WebRoot : web应用的根目录 |-静态资源(html+css+js+image+ve ...
 - Win32中GDI+应用(五)--GDI与GDI+编程模型的区别
			
在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context ha ...
 - [Lua]表驱动索引编程,form.lua
			
form.interface local form = {_tag = 'form'} function form.build(tag, super) --[[ -- form to produce ...
 - YouTube视频代码总结
			
var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api" ...
 - Ubuntu 误改/etc/sudoers 文件权限
			
添加用户时不小心修改了/etc/sudoers 权限,结果不能sudo了,Ubuntu默认关闭root帐户,结果傻X了,无法改回了. 方法如下: 1.重启机器,开机按ESC,进入恢复模式 2.此时,磁 ...
 - Hive 的 排序
			
全排序:order by对全部所有的数据进行排序,在实现的时候是放到一个reduce中进行的,可以想象这样做效率是比较低的: 局部排序:sort by对数据进行分组,然后在组内进行排序,每个reduc ...
 - hadoop 2.0--YARN
			
从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程.自此Apache H ...
 - MVC5框架解析之MvcHandler
			
从MvcHandler开始 首选MvcHandler显示实现了IHttpHandler接口中的void ProcessRequest(HttpContext context); 外层逻辑: 1.方法参 ...