set— 用以判断是否有重复
#构造
a = set(a:List[]), 就可以创建一个集合。
a = set()
len(a) # 返回长度
# 运算
s3=s1&s2 #交集
s4=s1|s2 #并集
s5=s1-s2 #差集
# 元素插入 & 删除
s.add("val")
s.remoce("val")
s.clear() #清空
字典
#构造
a = {key:val}
a = {}
len(a) # 返回长度
a.get(key,default) # 查找,返回对应的val,否则返回default
a.has_key(key) #若值存在则返回true
a.items() #遍历的迭代器
a.keys() #返回key
a.values() #返回values
# 元素插入 & 删除
s.update(a) #合并a到s
s.pop(key, default) #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
s.clear() #清空
sorted函数!
sorted(iterable, cmp=None, key=None, reverse=False)
- iterable,表示输入的是一个可迭代的对象。比如列表头,字典.item()。
- cmp,可选选项,自定义比较函数。
- key, 简单一点的定义,表示根据这个值进行比较大小关系
- reverse, True/False: 一般默认升序排列。
如何写key:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) # 按年龄排序
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
key 和 reverse 比一个等价的 cmp 函数处理速度要快。这是因为对于每个列表元素,cmp 都会被调用多次,而 key 和 reverse 只被调用一次
如何写cmp
python3删掉了关于这部分参数。python2中的cmp函数没有了。
可以使用functools
import functools
def cmp(a,b):
if a > b :
return -1
elif a < b :
return 1
else:
return 0
nums = [1,2,3,4,5,6]
sorted_nums = sorted(nums, key = functools.cmp_to_key(cmp))