lsyf8 发表于 2018-8-16 10:10:37

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]
查看完整版本: Python程序控制结构---2