首页 > 代码库 > Python程序控制结构---第三天笔记
Python程序控制结构---第三天笔记
类:数据+方法
变量名没有类型
对象才有类型
类型一旦确定,其可做的操作取决于此类型所支持的方法
. 号运算符
可调用属性:数据
返回一个数据,显示需要使用print语句
可调用方法:操作()
调用:执行一段代码
可调用对象:callable()
这么理解吧~~~
In [61]: def printName():
....: print ‘hello‘
....:
In [62]: callable(printName)
Out[62]: True
In [63]: callable(int)
Out[63]: True
列表:[]
元组:()
字典:{}
数值:
获取使用帮助:
获取对象支持的使用的属性和方法:dir()
某种方法的具体使用帮助:help()
获取可调用对象的文档字串:print obj.__doc__
*************集合:无序排列、可哈希*****************
支持集合关系测试
成员关系测试
in
not in
迭代
不支持:索引、元素获取、切片
集合类型:
set()
frozenset()
没有特定语法格式,只能通过工厂函数创建
In [86]: s1 = set([1,2,3])
In [87]: s1.
s1.add 增加一个元素,可以是一个字串
s1.issubset
s1.clear
s1.issuperset
s1.copy 制作一份副本
s1.pop
s1.difference 求差集
s1.remove
s1.difference_update
s1.symmetric_difference 对称差,也可以^
s1.discard
s1.symmetric_difference_update
s1.intersection 交集,也可以用&
s1.union 求并集
s1.intersection_update
s1.update 合并两个集合,支持异构
s1.isdisjoint
In [87]: len(s1) 集合中的项数
Out[87]: 3
*************容器、类型、对象*****************
所有对象都有引用计数 sys.getrefcount
列表和字典都支持两种类型的复制操作:浅复制和深复制【deepcopy()】
python中的所有对象都是‘第一类的’,这意味着使用标识符命名的所有对象都具有相同的状态,于是,能够命名的所有对象都可以直接当数据直接处理
所有序列都支持迭代
所有序列都支持的操作和方法:
s[i]
s[i:j]
s[i:j:stride]
len(s)
min(s)
max(s)
sum(s)
all(s)
any(s)
s1 + s2 连接
s1 * N 重复
obj in s1 成员关系判断
obj not in s1
可变序列操作
s1[index] = value
s1[i:j] = t:切片赋值
del s1[index]
del s1[i:j]
del s1[i:j:stride]
*************表达式和语句*****************
常用的表达式操作符
+ -
* / // %
逻辑运算
or and not
成员关系测试
in not index
对象实例测试
is not is
比较运算
< > <= >= == !=
位运算:
| & ^ << >>
一元运算
-x +x ~x
幂运算
x ** y
索引和分片
x[i], x[i,j], x[i,j,stride]
调用:
x(...)
取属性:
x.attribute
元组:()
序列:[...]
字典:{...}
三元选择表达式:x if y else z
匿名函数:lambda args:express
生成器函数发送协议:yield x
运算优先级:
(...), [...],{...}
s(i), s(i,j)
s.attribute
s(...)
一元运算
x ** y
*,/,//,%
+,-
<<,>>
&
^
|
<,<=,>,>=,==,!=
is,not is
in, not in
not
and
or
lambda
语句:
赋值语句
调用
print:
if/elif/else
for/else
while/else
pass:占位符
break:跳出最内层循环
continue:调到所处的最近层循环的开始处
return
yield
global:命名空间
raise:触发异常
import
from:模块属性访问
else代码块:循环终止才会执行,但是如果break终止的循环则不执行
class
try/except/finally:捕捉异常
del:删除引用
assert:调试检查
with/as:环境管理器
赋值语句:
隐式赋值:import,from,def,class,for,函数参数
元组和列表分解复制:当赋值符号(=)的左侧为元组或列表时,python会按照位置吧右侧的对象和左侧的目标自左而右逐一配对;个数不同时触发异常
l1 = (‘a‘,‘b‘,‘c‘)
x,y,z = l1
多重目标赋值
num1 = num2 = num3 = 44
增强赋值:+=, -=, *=, /=, //=, %=
流程控制结构
**************比较操作****************
python对象都支持比较操作
数字:通过大小比较
字符串:按照字母顺序
列表和元组:自左至右比较各部分内容
字典:对排序之后的(键,值)列表进行比较
python中的真假:
任何非0和数字和非空对象都为真
数字0和空对象以及特殊对象均为假
比较和相等测试会递归地应用于数据结构中
返回值为True和False
组合条件测试
x and y:与运算
x or y:或运算
not x:非运算
*************if : elif : else :*****************
In [11]: name = ‘jerry‘
In [13]: if name == ‘Tom‘:
....: print "It si %s" %name
....: elif name == "hanmeimei":
....: print "It is %s" %name
....: else:
....: print "alien"
*************A = X if Y else Z 三元表达式*****************
In [14]: A = 7
In [15]: B = 9
In [16]: max = A if A > B else B
In [17]: print max
9
*************while : else:*****************
用于编写通用迭代结构
顶端测试为真即会执行循环体,并会重复执行测试直到为假
In [19]: url = ‘www.magedu.com‘
In [20]: while url:
....: print url
....: url = url[1:]
....:
www.magedu.com
ww.magedu.com
w.magedu.com
.magedu.com
magedu.com
agedu.com
gedu.com
edu.com
du.com
u.com
.com
com
om
m
########
url = ‘www.magedu.com‘
while url:
print url
url = url[:-1]
########
url = ‘www.magedu.com‘
x = 0
while url:
print url
url = url[:-1]
x += 1
if x < 7 :
break
else:
print "game over"
########
x = 0 ; y = 100
In [27]: while x < y :
print x,
x+=1
....:
0 1 2 3 4 5 6 7 8 ... 98 99
########
练习1:逐一显示列表中的元素
In [46]: l1 = [‘z‘,‘c‘,‘v‘]
In [47]: len(l1)
Out[47]: 3
In [48]: i = 0
In [49]: while i < len(l1) :
....: print l1[i]
....: i += 1
....:
方法2
In [51]: while l1:
....: print l1[0]
....: l1 = l1[1:]
....:
逆序:
In [56]: while l1:
print l1[-1]
l1 = l1[:-1]
########
练习2:求100以内所有的偶数
########
练习3:逐一显示字典的所有键,并在最后说明总键数
In [59]: d1 = {‘x‘:1, ‘y‘:2, ‘z‘:3}
keyslist = d1.keys() 生成key列表
valuelist = d1.values() 生成value列表
In [116]: while keylist:
print keylist[0]
keylist.pop(0)
########
练习4:创建一个包含100以内所有奇数的列表
In [132]: l1 = []
In [133]: i = 1
In [134]: while i < 100:
.....: l1.append(i)
.....: i += 2
.....: else:
.....: print l1
.....:
########
练习5:列表
l1 = [0,1,2,3,4,5,6]
l2 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
以第一个列表中的元素为键,第二个列表中的元素为值生成字典d1
In [138]: i = 0
In [139]: d1 = {}
In [140]: while i < 7 :
.....: d1.update({l1[i]:l2[i]}) #也可以d1[l1[i]] = l2[i],给键值赋值
.....: i += 1
.....: else:
.....: print d1
注意:可以在循环外加if语句判断列表的长度len()
########
*************for in iterable: else:*****************
一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素
可用于字符串、元组、列表和其他的内置可迭代对象,以及通过类所创建的新对象
########
url = "www.baidu.com"
for x in url:
print x
########
In [24]: sum = 0
In [25]: for i in range(1,101): 也可以xrangge(1,101)
sum += i
....: else:
....: print sum
....:
5050
########
*************隐性迭代工具*****************
in成员关系测试
列表解析
map、reduce和filter函数
*************zip 并行遍历*****************
1. 取得一个或多个序列为参数,将给定的序列中并排的元素配成元组,
返回这些元组的列表
2. 可在for循环中用于实现并行迭代
3. 也常用于动态构造字典
####例子####
keys = [0,1,2,3,4,5,6]
values = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
D = {}
for (k,v) in zip(keys,values):
D[k] = v
else:
print D
本文出自 “linux-halt” 博客,请务必保留此出处http://loveall.blog.51cto.com/8658573/1873202
Python程序控制结构---第三天笔记