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等式右侧是一个容器类型,左侧是都好分隔的多个标识符,将右侧容器中数据一个个和左边标识符一一对应
简单解构
左右个数不一致,报错 ,不能进行解构
剩余变量解构
来源:https://www.cnblogs.com/xianggang/p/12642985.html