python2 6 day
列表count()方法:对象.count(参数)
使用python列表内置count()方法就可以统计某个元素在列表中出现了多少次。
>>> x=[1,2,5,1,1] >>> x.count(1) 3
python语言IOError错误一般多发生在对文件操作报错时
下面来列举一些常会引发IOError错误的示例,并简单的说下解决IOError错误的方法
AttributeError:属性错误,特性引用和赋值失败时会引发属性错误 NameError:试图访问的变量名不存在 SyntaxError:语法错误,代码形式错误 Exception:所有异常的基类,因为所有python异常类都是基类Exception的其中一员,异常都是从基类Exception继承的,并且都在exceptions模块中定义。 IOError:一般常见于打开不存在文件时会引发IOError错误,也可以解理为输出输入错误 KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误 IndexError:索引错误,使用的索引不存在,常索引超出序列范围,什么是索引 TypeError:类型错误,内建操作或是函数应于在了错误类型的对象时会引发类型错误 ZeroDivisonError:除数为0,在用除法操作时,第二个参数为0时引发了该错误 ValueError:值错误,传给对象的参数类型不正确,像是给int()函数传入了字符串数据类型的参数。
python函数的计划准备:
一、最开始要先去试着写一些小程序,而不需要直接上来就写函数,来定义它。 二、小段代码测试没问题了,再将它封闭成为一个函数,并起一个好记易读的名称。 三、要泛化这个函数,添加适合它的一些形参
除了列表cmp()比较函数可以做为参数放在sort(),key和reverse更是经常用到的sort方法另外两个可选参数。
>>> x=['hi','world','hehe'] >>> x.sort(key=len) >>> x ['hi', 'hehe', 'world'] >>> x.sort(key=len,reverse=True) >>> x ['world', 'hehe', 'hi'] >>> y=['3','9','66','3000'] >>> y.sort(key=int) >>> y ['3', '9', '66', '3000'] >>> y.sort(key=int,reverse=True) >>> y ['3000', '66', '9', '3']
zip()并行遍历
#zip()基本操作方法
>>> a = [1,2,3] >>> b = [4,5,6] >>> zip(a,b) [(1, 4), (2, 5), (3, 6)] >>> d,e,f=(1,2,3),(4,5,6),(7,8,9) >>> zip(d,e,f) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] >>> str1 = 'abc' >>> str2 = 'def123' >>> zip(str1,str2) [('a', 'd'), ('b', 'e'), ('c', 'f')] #zip()方法用在for循环中,就会支持并行迭代: >>> f1=[2,3,4] >>> f2=[4,5,6] >>> for (x,y) in zip(f1,f2): print x,'+',y,'=',x+y 2 + 4 = 6 3 + 5 = 8 4 + 6 = 10
字典get()方法:
字典get()方法,可以访问字典中键对应的值。key存在则返回对应value,键不存在返回None
>>> a={'name':'hy'} >>> print a['age'] Traceback (most recent call last): File "<pyshell#60>", line 1, in <module> print a['age'] KeyError: 'age' >>> print a.get('name') hy >>> print a.get('age') None
>>> x={'name':'hy','url':'http://www.cnblogs.com/hyit/'}#items()方法是将字典中的每个项分别做为元组,添加到一个列表中,形成了一个新的列表容器 >>> x.items() [('url', 'http://www.cnblogs.com/hyit/'), ('name', 'hy')]
>>> x.iteritems() <dictionary-itemiterator object at 0x013B31B0> >>> list(x.iteritems()) [('url', 'http://www.cnblogs.com/hyit/'), ('name', 'hy')]
字典popitem()方法
随机返回并删除字典中的一对键和值。为什么是随机删除呢?因为字典是无序的
>>> x = {'a':1,'b':2,'c':'3'} >>> x.popitem() ('a', 1)
>>> x.popitem('c')
Traceback (most recent call last):
File "<pyshell#76>", line 1, in <module>
x.popitem('c')
TypeError: popitem() takes no arguments (1 given)
字典pop()方法
>>> x.pop('c') '3'
>>> x.pop()
Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module>
x.pop()
TypeError: pop expected at least 1 arguments, got 0
字典setdefault()方法
>>> a = { } >>> a['name'] = 'hy' >>> a.setdefault('name','gini') 'hy' >>> a.setdefault('age','gini') 'gini' >>> a {'age': 'gini', 'name': 'hy'} >>> a.setdefault('work') >>> a {'age': 'gini', 'work': None, 'name': 'hy'} >>>
列表推导式
>>> a = [1,2,3,4,5,6,7,8,9,10] >>> [x for x in a if x % 2 == 0] [2, 4, 6, 8, 10] >>> [[x,y] for x in range(2) for y in range(2)] [[0, 0], [0, 1], [1, 0], [1, 1]]
numbers = [1,2,3,4,5,6] even = [] for number in numbers: if number%2 == 0: even.append(number) #等效于 umbers = [1,2,3,4,5,6] even = [number for number in numbers if number%2 == 0]
列表和元组这两种数据类型是最常被用到的序列,python内建序列有六种,除了刚刚有说过的两种类型之外,还有字符串、Unicode字符串、buffer对像和最后一种xrange对像,这几种都是不常使用的;
所有序列类型有一些可以通用的方法,比如:索引、分片、乘、加,检查成员资格。
序列解包
>>> a,b,c=1,2,3#交换变量的值 >>> a,b,c=b,c,a >>> a,b,c (2, 3, 1) >>>values = 1 , 2 , 3 >>>values (1,2,3) >>>a , b , c = values#序列解包 >>>print a , b , c 1 2 3
is和==这两种运算符区别
==比较操作符:用来比较两个对象是否相等,value做为判断因素;
is同一性运算符:比较判断两个对象是否相同,id做为判断因素。
>>> x=y=[1,2,3] >>> z=[1,2,3] >>> x is y True >>> x is z False >>>
"迭代“, 指重复执行一个指令,用在python的list里,是指对重复调用list对象,将调用list对象返回的数据作为参数传给一个函数并由返回的结果组成一个新的list; “递归”,指一个函数执行过程中调用了自己,是对一种计算方法的描述,对于python的list的调用显然用“递归”这个词汇不合适。 从字面上理解,“迭代”和“递归”也是不同的概念,“迭代”是重复某一过程,“递归”是调用自身,即“迭代”是循环操作,“递归”是嵌套操作。
解压赋值(常常与*搭配)
解压赋值可以用在任何可迭代对象上面,而不仅仅是列表或者元组。 包括字符串,文件对象,迭代器和生成器。
有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况Python并没有提供特殊的语法;
但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
谢谢