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运维部落立场,如若转载,请注明出处:/93839

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐直属  万达注册  万达娱乐直属QQ  万达娱乐主管QQ  测试  万达娱乐开户  万达娱乐登录  万达开户  guoqibee.com  万达主管QQ