Python程序控制结构---2
类:数据+方法变量名没有类型
对象才有类型
类型一旦确定,其可做的操作取决于此类型所支持的方法
. 号运算符
可调用属性:数据
返回一个数据,显示需要使用print语句
可调用方法:操作()
调用:执行一段代码
可调用对象:callable()
这么理解吧~~~
In : def printName():
....: print 'hello'
....:
In : callable(printName)
Out: True
In : callable(int)
Out: True
列表:[]
元组:()
字典:{}
数值:
获取使用帮助:
获取对象支持的使用的属性和方法:dir()
某种方法的具体使用帮助:help()
获取可调用对象的文档字串:print obj.__doc__
*************集合:无序排列、可哈希*****************
支持集合关系测试
成员关系测试
in
not in
迭代
不支持:索引、元素获取、切片
集合类型:
set()
frozenset()
没有特定语法格式,只能通过工厂函数创建
In : s1 = set()
In : 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 : len(s1)集合中的项数
Out: 3
*************容器、类型、对象*****************
所有对象都有引用计数 sys.getrefcount
列表和字典都支持两种类型的复制操作:浅复制和深复制【deepcopy()】
python中的所有对象都是‘第一类的’,这意味着使用标识符命名的所有对象都具有相同的状态,于是,能够命名的所有对象都可以直接当数据直接处理
所有序列都支持迭代
所有序列都支持的操作和方法:
s
s
s
len(s)
min(s)
max(s)
sum(s)
all(s)
any(s)
s1 + s2连接
s1 * N重复
obj in s1成员关系判断
obj not in s1
可变序列操作
s1 = value
s1 = t:切片赋值
del s1
del s1
del s1
*************表达式和语句*****************
常用的表达式操作符
+-
*///%
逻辑运算
orandnot
成员关系测试
innot index
对象实例测试
isnot is
比较运算
===!=
位运算:
|&^
一元运算
-x+x~x
幂运算
x ** y
索引和分片
x,x,x
调用:
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 : name = 'jerry'
In : 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 : A = 7
In : B = 9
In : max = A if A > B else B
In : print max
9
*************while : else:*****************
用于编写通用迭代结构
顶端测试为真即会执行循环体,并会重复执行测试直到为假
In : url = 'www.magedu.com'
In : while url:
....: print url
....: url = url
....:
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 : while x < y :
print x,
x+=1
....:
0 1 2 3 4 5 6 7 8 ... 98 99
########
练习1:逐一显示列表中的元素
In : l1 = ['z','c','v']
In : len(l1)
Out: 3
In : i = 0
In : while i < len(l1) :
....: print l1
....: i += 1
....:
方法2
In : while l1:
....: print l1
....: l1 = l1
....:
逆序:
In : while l1:
print l1[-1]
l1 = l1[:-1]
########
练习2:求100以内所有的偶数
########
练习3:逐一显示字典的所有键,并在最后说明总键数
In : d1 = {'x':1, 'y':2, 'z':3}
keyslist= d1.keys()生成key列表
valuelist = d1.values()生成value列表
In : while keylist:
print keylist
keylist.pop(0)
########
练习4:创建一个包含100以内所有奇数的列表
In : l1 = []
In : i = 1
In : while i < 100:
.....: l1.append(i)
.....: i += 2
.....: else:
.....: print l1
.....:
########
练习5:列表
l1 =
l2 = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
以第一个列表中的元素为键,第二个列表中的元素为值生成字典d1
In : i = 0
In : d1 = {}
In : while i < 7 :
.....: d1.update({l1:l2})#也可以d1] = l2,给键值赋值
.....: i += 1
.....: else:
.....: print d1
注意:可以在循环外加if语句判断列表的长度len()
########
*************forin iterable: else:*****************
一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素
可用于字符串、元组、列表和其他的内置可迭代对象,以及通过类所创建的新对象
########
url = "www.baidu.com"
for x in url:
print x
########
In : sum = 0
In : 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 =
values = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
D = {}
for (k,v) in zip(keys,values):
D = v
else:
print D
页:
[1]