马哥博客作业第三周

混江龙づ霸主 提交于 2020-04-06 18:10:19

Ipython使用

ipython是增强的CPython,尤其是交互式体验。该项目还提供了jupyter notebook,之后分离。

帮助

    • Ipython概述和简介
  • help(name)

    • 查询指定名称的帮助
  • obj?

    • 列出对象的详细帮助
  • obj??

    • 如果可以,则列出更加详细的帮助

特殊变量

ipython内部提供了非常多的内建变量,或许能用到的如下

  • _表示第一次输出

  • __表示倒数第二次输出

  • ___表示倒数第三次输出

  • _dh目录历史

  • _oh输出历史

shell命令

使用 !command 执行shell命令

魔术方法

IPython内置的特殊方法,使用%百分号开头

  • %开头是line magic

  • %%开头是cell magic,notebook的cell

集合

集合,简称集。由任何个元素构成的集体。高级语言都实现了这个非常重要的数据结构类型。在python中,它是可变的、无序的、不重复的元素的集合

初始化

元素性质

  • 去重:在集合中,所有元素必须相异
  • 无序:因为无序,所以不可索引
  • 可哈希:python集合中的元素必须可以hash,即元素都可以使用内建函数hash ( 目前学过的不可hash类型:list、set、byte array )
  • 可迭代:set中虽然元素不一样,但元素都可以迭代出来

增加

  • add(elem) 返回值None #注意只能一次增加一个元素,如果元素存在,则不会添加
  • update(*others) #合并其他元素到set集合中来,others必须是可迭代对象。返回值None 就地修改

删除

  • remove(elem) 从set中移除一个元素,元素不存在,抛出keyError异常

  • deiscard(elem)从set中移除一个元素,元素不存在什么都不做。

  • pop()—>item 随机的从集合中移除一个元素,并返回移除的元素。空集合调用返回keyError异常

  • clear() 移除所有元素

修改

集合类型没有修改。因为元素位于。如果元素能够加入到集合中,说明它和别的元素不一样。所谓修改,其实就是把当前元素改成一个完全不同的元素,就是删除加入新元素。

索引

非线性结构,不可索引

遍历

只要是容器,都可以遍历元素。但是效率都是O(n)

成员运算符in

print(10 in [1,2,3])

print(10 in {1,2,3})

in 在set中效率比list高

ipython魔术方法

IPython内置的特殊方法,使用%百分号开头

  • %开头是line magic

  • %%开头是cell magic,notebook的cell

set和线性结构比较

可哈希

  • 数值型int、float、cpmplex
  • 布尔型True、False
  • 字符串string、bytes
  • tuple
  • None
  • 以上都是不可变类型,都是可哈希类型,hash able

set的元素必须是可hash的

集合概念

全集:(并集U、union的意思)所有元素的集合。
子集:(subset和超子集superset)一个集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集
真子集和真超集:A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集
并集:多个集合合并的结果
交集:多个集合的公共部分
差集:集合中除去和其他集合公共部分

集合运算

并集:|

  • | 并集运算符(用union(*others)也可以)(会返回一个新的集合)
  • |= 等同于update方法。多个集合和并,就地修改
  • 并集:将两个集合A和B的所有元素合并到一起

交集 &

  • & 等同于intersection 返回多个集合的交集。(会返回新的集合)
  • &= 等同于intersection_update获取和多个集合的交集,并就地修改。
  • 交集:集合A和B,由属于A、B的元素组成的公共部分的集合

差集:-

  • -等同difference(*others) 返回和多个集合的差集,会返回一个新的集合
  • -= 等同difference_update(*others) 获取和多个集合的差集并就地修改
  • 差集:集合A和B,由所有属A且不属于B的元素组成的集合

对称差集:^

  • ^ 等同于symmetric_differece(other)返回一个新的集合(和另一个集合的差集)

  • ^= 等同于symmetric_differece_update(other)获取和另一个集合的差集并就地修改

  • 对称差集:集合A和B,由所有不属于A和B的交集元素组成的集合。(A-B)U(B-A)

其他集合运算

  • <= 、issubset 判断当前集合是否是另一个集合的子集
  • set1 < set2 判断set1是否是set2的真子集
  • issuperset(ohter)、>= 判断当前集合是否是other的超集
  • set1 > set2 判断set1是否是set2的真超集
  • isdisjoint(other)当前集合和另一个集合没有交集,没有交集返回True

字典Dict

python中,字典由任意个元素构成的集合,每一个元素称为item,也称为entry。这个item是有(key,value)组成的二元组。

字典是可变的、无序的、key不重复的key-value键值对集合

初始化

元素访问

  • d[key] :返回可用对应的值value,如果可以不存在会抛出keyError异常

  • get(key[,default]) :返回key对应的值value,如果key不存在就返回缺省值default,缺失值默认为None

  • setdefault(key[,default]):返回key对应的值value,如果key不存在,添加kv对,value设置为default,并返回default,如果default没有设置,则返回None

新增和修改

  • d[key] = value 将key对象的值修改为value,如果key不存在就添加新的key对应value
  • update([other])—>None 使用另一个字典的kv对更新本字典,key不存在,就添加,key存在,覆盖已存在的key对应的值,就地修改

删除

  • pop(key[,default])

    • key存在,移除它,并返回它的value
    • key不存在,返回给定的delaut
    • default未设置,key不存在则抛出keyerror异常
  • popite()

    • 移除并返回一个任意的键值对
    • 字典为empty,抛出keyerror
  • clear

    • 清空字典

遍历


遍历与删除

key

有序性

字典元素是按照key的hash值无序存储的

但是,有时候我们却需要一个有序的元素顺序,python3.6之前,使用OrderedDict类可以做到,3.6开始dict自身支持。


defaultdict

封装与解构

概念

封装:python等式右侧出现都好分隔多值的时候,就回将这几个值封装到元祖中

解构:python等式右侧是一个容器类型,左侧是都好分隔的多个标识符,将右侧容器中数据一个个和左边标识符一一对应

简单解构


左右个数不一致,报错 ,不能进行解构

剩余变量解构

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!