python控制结构(二)_Python程序控制结构---2

类:数据+方法

变量名没有类型

对象才有类型

类型一旦确定,其可做的操作取决于此类型所支持的方法

. 号运算符

可调用属性:数据

返回一个数据,显示需要使用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]

*************表达式和语句*****************

常用的表达式操作符

+-

*///%

逻辑运算

orandnot

成员关系测试

innot index

对象实例测试

isnot 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值