Python 部分知识点总结(二)

此篇博客只是记录第四周未掌握或不熟悉的知识点,用来加深印象。

一、set 集操作

  1. set 翻译为集合,collection翻译为集合类型,是一个大概念
    set 是可变的,无序的,不重复的元素的集合
  2. set()  –>  定义一个空集合
    >>> s4 = {}                      定义的是一个字典
    >>> s4 = {9,10,11}          定义的是一个 set
    >>> s4 = {(1,2),10,’a’}      定义的是一个 set
    >>> s4 = {[1],(1),1}          定义不成功,因为 list 是可变类型,不能哈希
  3. set 元素的特性
    set 的元素要求必须可以 hash
    目前学过的不可 hash 的类型有 list、set
    元素不可以索引
    set 可以迭代
  4. 增加
    add(elem)
          增加一个元素到 set 中
          如果元素存在,什么都不做
    update(*others)
          合并其他元素到 set 集合中来
          参数 other 必须是可迭代对象
          就地修改
  5. 删除
    remove(elem)
           从 set 中移除一个元素
           元素不存在,抛出 KeyError 异常
     discard(elem)
           从 set 中移除一个元素
           元素不存在,什么都不做
      pop()  –>  item
            移除并返回任意的元素
            空集返回 KeyError 异常
      clear()
             移除所有元素
  6. 修改、查询
         要么删除,要么加入新的元素,因为不允许重复,如果能放进去,肯定不一样,所以无法修改
         非线性结构,因为无法索引,所以无法查询
         可以迭代所有元素
  7. 成员运算符的比较
        in 和 not in 判断元素是否在 set 中,效率极快,因为相当于先 hash 一下,根据索引来查找的,效率是 O(1)
  8. 集合运算
       并集:A∪B,union(*others)  等同于 |,即返回一个新的集合;update(*others) 等同于 |=,即就地修改
       交集:A∩B,intersection(*others) 等同于 &,即返回一个新的集合;intersection_update(*others) 等同于 &=,即就地修改
       差集:A-(A∩B),difference(*others) 等同于 – ,即返回一个新的集合;difference_update(*others) 等同于 -=,即就地修改
        对称差集:(A-(A∩B)) + (B-(A∩B)),symmetric_difference(other)  等同于 ^,即返回一个新的集合;symmetric_difference_update(other) 等同于 ^=,即就地修改
         issubset(other) 即 <=
         isuperset(other) 即 >=
         isdisjoin(other) 判断当前集合和另一个集合没有交集,如果没有,则返回 True

二、封装和解构

  1. x,y = y,x   先把等号右边的封装起来组成一个元组,然后左边再解构,赋予对应的值
  2. 解构
       把线性结构的元素解开,并顺序的赋给其它变量
       左边接纳的变量数要和右边解开的元素个数一致
       使用 *变量名 接收,但不能单独使用
       被 *变量名 收集后组成一个列表
                    head,*mid,tail = “abcdefgh”
                    >>> mid   –>  [‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
                    >>> type(mid)  –> list
  3. 丢弃变量
        这是一个惯例,是一个不成文的约定,不是标准
        如果不关心一个变量,就可以定义改变变量的名字为 _
        _  是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确知道这个数据需要使用
         _ 这个变量本身无任何语义,没有任何可读性,所以不是用来给人使用的
         Python 中很多库,都使用这个变量,使用十分广泛,请不要在不明确变量作用域的情况下,使用 _ 导致和库中 _ 冲突
  4. 练习
      环境变量 JAVA_HOME = /usr/bin,返回环境变量名和路径
      first,*_,second = “JAVA_HOME=/usr/bin”.partition(“=”)
      print(first)
      print(second)

三、切片

  1. 支持负索引
  2. 超过上界(右边界),就取到末尾;超过下界(左边界),取到开头
  3. start 一定要在 stop 的左边
  4. [:] 表示从头到尾,全部元素被取出,等效于 copy() 方法
  5. [start:stop:step]   step 要和 start:stop 同向,否则返回空序列

四、format函数

  1. format 函数格式字符串语法:
       “{} {×××}”.format(*args,**kwargs)  –> str
       agrs 是位置参数,是一个元组
       kwargs 是关键字参数,是一个字典
       花括号表示占位符
       {}表示按照顺序匹配位置参数,{n}表示取位置参数索引为 n 的值
       {×××} 表示在关键字参数中搜索名称一致的
       {{}} 表示打印花括号
  2. 位置参数:”{}:{}”.format(‘192.168.1.100’,8888),这就是按照位置顺序用位置参数替换前面的格式字符串中的占位符
    关键字参数或命名参数:”{server} {1}:{0}”.format(8888,’192.168.1.100′,server=’Web Server Info:’),位置参数按照序号匹配,关键字参数按照名词匹配
    访问元素:”{0[0]}.{0[1]}”.format((‘magedu’,’com’))
    对象属性访问:
           from collections import namedtuple
           Point = namedtuple(‘Point’,’x y’)
           p = Point(4,5)
           “{{{0.x},{0.y}}}”.format(p)
  3. 对齐
     ‘{0}*{1}={2}’.format(3,2,2*3)
     ‘{0}*{1}={2:<2}’.format(3,2,2*3)   左对齐
      ‘{0}*{1}={2:>05}’.format(3,2,2*3)  右对齐,且不够的位置补 0
      ‘{:*^30}’.format(‘centered’)   居中,且不够的位置补 *
  4. 进制
     >>> “int:{0:d}; hex:{0:x}; oct:{0:o}; bin:{0:b}”.format(42)
     ‘int:42; hex:2a; oct:52; bin:101010’
      >>> “int:{0:d}; hex:{0:#x}; oct:{0:#o}; bin:{0:#b}”.format(42)   #的作用是会将不同类型的数据加上相应的前缀
      ‘int:42; hex:0x2a; oct:0o52; bin:0b101010’
  5. 浮点数
     >>> print(“{}”.format(3**0.5))
     1.7320508075688772
     >>> print(“{:g}”.format(3**0.5))
      1.73205
      >>> print(“{:f}”.format(3**0.5))
      1.732051
      >>> print(“{:10f}”.format(3**0.5))    右对齐
      1.732051
      >>> print(“{:2}”.format(102.231))    宽度为2,本来数字宽度已超过2,此参数等于无效
      102.231
      >>> print(“{:.2}”.format(3**0.5))     2个有效数字
      1.7
      >>> print(“{:.2f}”.format(3**0.5))    小数点后2位
      1.73
      >>> print(“{:3.2f}”.format(3**0.5))     宽度为3,小数点后2位
         1.73
       >>> print(“{:3.3f}”.format(0.2745))    宽度为3,小数点后3位,因为精度的原因所以才超过宽度
       0.275
       >>> print(“{:3.3%}”.format(1/3))
       33.333%

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/93839

(0)
上一篇 2018-03-30 20:45
下一篇 2018-03-30 21:46

相关推荐