注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

python学习笔记  

2015-12-27 17:51:17|  分类: html5-webapp |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改.
-2)文件操作
python学习笔记 - itoedr - itoedr的it学苑
python的文件操作简图
 
 

-1) Lambda的作用
python学习笔记 - itoedr - itoedr的it学苑
lambda的作用
o、求20到100这间整数的阶乘
       reduce(lambda x, y: x*y,range(20,100))
       注:用内建函数reduce直接调用lambda定义的函数(def fun(x,y): return x+y),参数从range(20,100)中依次取得。
 一、什么是元组
  1. #不可变序列-----元组 tuple  
  2.   
  3. #元组和列表十分相似,元组和字符串一样都是不可变的。  
  4.   
  5. #元组由不同的元素组成,每个元素可以存储不同类型的数据,例如  
  6. #字符串、数字和元组  
  7.   
  8. #元组通常代表一行数据,而元组中的元素则代表不同的数据项  
  9.   
  10. #创建元组,不定长,但一旦创建后则不能修改长度  
  11.   
  12. #空元组  
  13. tuple_name = ()  
  14.   
  15. #如果创建的元组只有一个元素,那么该元素后面的逗号是不可忽略的  
  16. >>>(4)  
  17. 4  
  18. >>>(4,)  
  19.  (4,)  
  20.   
  21. user = ('01','02','03','04')  
  22.   
  23. #添加元组  
  24. user = (user,'05')  
  25. ==>(('01','02','03','04'),'05')  
  26.                                       
  27. #去重  
  28. >>> set((2,2,2,4,4))  
  29. set([24])  
  30.   
  31. #访问元组  
  32. user[0]  
  33.   
  34. #不可修改元素  
  35. >>> user=(1,2,3)  
  36. >>> user[0]=2  
  37.   
  38. Traceback (most recent call last):  
  39.   File "<pyshell#5>", line 1in <module>  
  40.     user[0]=2  
  41. TypeError: 'tuple' object does not support item assignment  
  42.   
  43. #访问二元元组  
  44.   
  45. user1 = (1,2,3)  
  46. user2 = (4,5,6)  
  47. user = (user1,user2)  
  48.  ==>((1,2,3),(4,5,6))  
  49. print user[0][0]  
  50.   
  51. #解包  
  52. user = (1,2,3)  
  53. a,b,c = user  
  54.                                         a=1,b=2,c=3  
  55.           
  56. #元组的遍历  
  57. #range([start],stop,[,step]) 返回一个递增后者递减的 数字 列表  
  58.   
  59. for item in range(len(user)):  
  60.     print user[item]  
  61.       
  62. #二元元组的访问  
  63. for i in range(len(user)):  
  64.     for j in range(len(user)):  
  65.         print 'user['+str(i)+']['+str(j)+']=',user[i][j]  
  66.      
  67. #使用map()实现遍历  
  68.   
  69. #map(function_name,sequence[,sequence...])  
  70.   
  71. #返回 function处理后的列表  
  72. #sequence 元组或列表  
  73.   
  74. for item in map(None,user):  
  75.     for i in item:  
  76.         print i 
二、什么是序列
**********************
 Python——序列
**********************
        在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是 0,第二个则是 1,以此类推。序列中的最后一个元素标记为 -1,倒数第二个元素为 -2,一次类推。
        Python包含 6 中内建的序列,包括列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。本文重点讨论列表和元组,列表和元组的主要区别在于,列表可以修改,元组则不能。
::通用序列操作
        所有序列类型都可以进行某些特定的操作。这些操作包括:索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员(成员资格)。除此之外,Python还有计算序列长度、找出最大元素和最小元素的内建函数。
        1. 索引
         序列中的所有元素都是有编号的——从 0 开始递增。这些元素可以通过编号分别访问,如下:
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> greeting = 'Hello' 
    >>> greeting[0] 
    'H' 
         (字符串就是一个有字符组成的序列。)
         使用负数索引时,Python会从右边,也就是从最后 1 个元素开始计数。最后 1 个元素的位置编号是 -1。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> greeting[-1] 
    'o' 
         字符串字面值能够直接使用索引,而不需要一个变量引用它们。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> 'Hello'[1] 
    'e' 
         如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> fourth = raw_input('Year: ')[3] 
    Year: 2005 
    >>> fourth 
    '5' 
        2. 分片
        使用分片操作来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现:
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
    >>> numbers[3:6] 
    [4, 5, 6] 
    >>> numbers[0:1] 
    [1] 
         第 1 个索引是需要提取部分的第 1 个元素的编号,而最后的索引则是分片之后剩下部分的第 1 个元素的编号。(第 1 个索引的元素是包含在分片内的,而第 2 个则不包含在分片内。)
         如果分片中最左边的索引比它右边的晚出现在序列中,结果就是一个空的序列。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[-3:0] 
    [] 
         为了让分片部分能够包含列表的最后一个元素,可以通过最后一个元素的下一个元素所对应的索引作为边界,或置空最后一个索引即可:
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[7:10] 
    [8, 9, 10] 
    >>> numbers[-3:] 
    [8, 9, 10] 
         置空同样适用于序列开始的元素:
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[:3] 
    [1, 2, 3] 
         复制整个序列,可以将两个索引都置空:
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[:] 
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
      
         3. 步长
         进行分片的时候,分片的开始和结束点需要进行指定。而另外一个参数——步长——通常都是隐式设置的。在普通的分片中,步长是 1。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[0:10:1] 
    [1, 2, 3, 4 ,5 , 6, 7, 8, 9, 10] 
         如果步长被设置为比 1 大的数,那么就会跳过某些元素。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[0:10:2] 
    [1, 3, 5, 7, 9] 
    >>> numbers[3, 6, 3] 
    [4] 
         步长不能为 0 —— 那不会向下执行 —— 但步长可以是负数,即从右到左提取元素。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers[8:3:-1] 
    [9, 8, 7, 6, 5] 
    >>> numbers[0:10:-2] 
    [] 
    >>> numbers[10:0:-2] 
    [10, 8, 6, 4, 2] 
         使用一个负数作为步长时,必须让开始点(开始索引)大于结束点。
        
         4. 序列相加
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> [1, 2, 3] + [4, 5, 6] 
    [1, 2, 3, 4, 5, 6] 
    >>> 'Hello, ' + 'world!' 
    'Hello, world!' 
          两种相同类型的序列才能进行连接操作。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> [1, 2, 3] + 'world!' 
    Traceback (most recent call last): 
      File "<stdin>", line 1, in <module> 
    TypeError: can only concatenate list (not "str") to list 
         5. 乘法
         用数字 x 乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复 x 次。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> 'python' * 5 
    'pythonpythonpythonpythonpython' 
         6. 成员资格
         为了检查一个值是否在序列中,可以使用 in 运算符。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> permissions = 'rw' 
    >>> 'w' in permissions 
    True 
    >>> 'x' in permissions 
    False 
          7. 长度、最小值和最大值
          len函数返回序列中所包含元素的数量、min函数和max函数则分别返回序列中最大和最小的元素。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
    >>> numbers = [100, 34, 678] 
    >>> len(numbers) 
    3 
    >>> max(numbers) 
    678 
    >>> min(numbers) 
    34 
    >>> max(2, 3) 
    3 
    >>> min(9, 3, 2, 5) 
    2 

*********************************
三、python内置函数大全
*********************************

内置函数,一般都是因为使用频率比较频繁或是元操作,所以通过内置函数的形式提供出来,通过对python的内置函数分类分析可以看出来:基本的 数据操作基本都是一些数学运算(当然除了加减乘除)、逻辑操作、集合操作、基本IO操作,然后就是对于语言自身的反射操作,还有就是字符串操作,也是比较 常用的,尤其需要注意的是反射操作。


(1)数学运算类

abs(x) 求绝对值
1、参数可以是整型,也可以是复数
2、若参数是复数,则返回复数的模
complex([real[, imag]]) 创建一个复数
divmod(a, b) 分别取商和余数
注意:整型、浮点型都可以
float([x]) 将一个字符串或数转换为浮点数。如果无参数将返回0.0
int([x[, base]])  将一个字符转换为int类型,base表示进制
long([x[, base]])  将一个字符转换为long类型
pow(x, y[, z])  返回x的y次幂
range([start], stop[, step])  产生一个序列,默认从0开始
round(x[, n])  四舍五入
sum(iterable[, start])  对集合求和
oct(x) 将一个数字转化为8进制
hex(x) 将整数x转换为16进制字符串
chr(i) 返回整数i对应的ASCII字符
bin(x) 将整数x转换为二进制字符串
bool([x]) 将x转换为Boolean类型

 

(2)集合类操作

basestring() str和unicode的超类
不能直接调用,可以用作isinstance判断
format(value [, format_spec]) 格式化输出字符串
格式化的参数顺序从0开始,如“I am {0},I like {1}”
unichr(i) 返回给定int类型的unicode
enumerate(sequence [, start = 0]) 返回一个可枚举的对象,该对象的next()方法将返回一个tuple
iter(o[, sentinel]) 生成一个对象的迭代器,第二个参数表示分隔符
max(iterable[, args...][key])  返回集合中的最大值
min(iterable[, args...][key]) 返回集合中的最小值
dict([arg]) 创建数据字典
list([iterable])  将一个集合类转换为另外一个集合类
set() set对象实例化
frozenset([iterable]) 产生一个不可变的set
str([object])  转换为string类型
sorted(iterable[, cmp[, key[, reverse]]])  队集合排序
tuple([iterable])  生成一个tuple类型
xrange([start], stop[, step])  xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能为我们节省内存

 

(3)逻辑判断

all(iterable) 1、集合中的元素都为真的时候为真
2、特别的,若为空串返回为True
any(iterable) 1、集合中的元素有一个为真的时候为真
2、特别的,若为空串返回为False
cmp(x, y) 如果x < y ,返回负数;x == y, 返回0;x > y,返回正数

 

(4)反射

callable(object) 检查对象object是否可调用
1、类是可以被调用的
2、实例是不可以被调用的,除非类中声明了__call__方法
classmethod() 1、注解,用来说明这个方式是个类方法
2、类方法即可被类调用,也可以被实例调用
3、类方法类似于Java中的static方法
4、类方法中不需要有self参数
compile(source, filename, mode[, flags[, dont_inherit]]) 将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。
1、参数source:字符串或者AST(Abstract Syntax Trees)对象。
2、参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
3、参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。
4、参数flag和dont_inherit:这两个参数暂不介绍
dir([object]) 1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;
2、带参数时,返回参数的属性、方法列表。
3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。
4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息
delattr(object, name) 删除object对象名为name的属性
eval(expression [, globals [, locals]]) 计算表达式expression的值
execfile(filename [, globals [, locals]]) 用法类似exec(),不同的是execfile的参数filename为文件名,而exec的参数为字符串。
filter(function, iterable) 构造一个序列,等价于[ item for item in iterable if function(item)]
1、参数function:返回值为True或False的函数,可以为None
2、参数iterable:序列或可迭代对象
getattr(object, name [, defalut]) 获取一个类的属性
globals() 返回一个描述当前全局符号表的字典
hasattr(object, name) 判断对象object是否包含名为name的特性
hash(object) 如果对象object为哈希表类型,返回对象object的哈希值
id(object) 返回对象的唯一标识
isinstance(object, classinfo) 判断object是否是class的实例
issubclass(class, classinfo) 判断是否是子类
len(s)  返回集合长度
locals()  返回当前的变量列表
map(function, iterable, ...)  遍历每个元素,执行function操作
memoryview(obj)  返回一个内存镜像类型的对象
next(iterator[, default])  类似于iterator.next()
object()  基类
property([fget[, fset[, fdel[, doc]]]])  属性访问的包装类,设置后可以通过c.x=value等来访问setter和getter
reduce(function, iterable[, initializer])  合并操作,从第一个开始是前两个参数,然后是前两个的结果与第三个合并进行处理,以此类推
reload(module)  重新加载模块
setattr(object, name, value) 设置属性值
repr(object)  将一个对象变幻为可打印的格式
slice()  
staticmethod 声明静态方法,是个注解
super(type[, object-or-type])  引用父类
type(object) 返回该object的类型
vars([object])  返回对象的变量,若无参数与dict()方法类似
bytearray([source [, encoding [, errors]]]) 返回一个byte数组
1、如果source为整数,则返回一个长度为source的初始化数组;
2、如果source为字符串,则按照指定的encoding将字符串转换为字节序列;
3、如果source为可迭代类型,则元素必须为[0 ,255]中的整数;
4、如果source为与buffer接口一致的对象,则此对象也可以被用于初始化bytearray.
zip([iterable, ...])  实在是没有看懂,只是看到了矩阵的变幻方面

 

(5)IO操作

file(filename [, mode [, bufsize]]) file类型的构造函数,作用为打开一个文件,如果文件不存在且mode为写或追加时,文件将被创建。添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到mode参数中,将允许对文件同时进行读写操作
1、参数filename:文件名称。
2、参数mode:'r'(读)、'w'(写)、'a'(追加)。
3、参数bufsize:如果为0表示不进行缓冲,如果为1表示进行行缓冲,如果是一个大于1的数表示缓冲区的大小 。
input([prompt])  获取用户输入
推荐使用raw_input,因为该函数将不会捕获用户的错误输入
open(name[, mode[, buffering]])  打开文件
与file有什么不同?推荐使用open
print 打印函数
raw_input([prompt])  设置输入,输入都是作为字符串处理

 

(6)其他

help()--帮助信息

  评论这张
 
阅读(67)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017