集合
注意:
-
集合是可变的,所有的操作都是改变其本身,也就是说 id(指针的存储路径)是不会改变的,只是改变了内容
-
集合(set)是一个无序的不重复元素的数据结构。(所以没有下标索引)
-
集合只有增加、删除、查询(不能用索引),没有修改的方法
-
可以使用大括号 { } 或者 set() 函数创建集合,但是创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
1、内置方法
# add 用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作 >>> set1 = {'1', 'a', 'd', 2} >>> set1.add('1') # 没有返回值 >>> set1.add(1) >>> set1 {1, 2, 'd', 'a', '1'} # update 用于向集合添加元素, 这个和add有区别 >>> set1.add("edf") # add是整体增加 >>> set1 {'edf'} >>> set1.update("edf") # 拆开来增加 >>> set1 {'d', 'f', 'edf', 'e'} # remove 删除元素 >>> set1 {'d', 1, 2, 3, 'f', 'e', 'edf'} >>> set1.remove(1) >>> set1 {'d', 2, 3, 'f', 'e', 'edf'} # discard 方法用于移除指定的集合元素。该方法的参数也是只接收一个值 # 注意:该方法不同于remove()方法,因为remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会。 >>> set4 = {1,2,333,'sd', 'zz'} >>> set4.discard(1) # 没有返回值 >>> set4 {2, 'sd', 333, 'zz'} >>> set4.discard(5) >>> set4 {2, 'sd', 333, 'zz'} # pop 用于随机移除一个元素。 >>> fruits = {"apple", "banana", "cherry"} >>> fruits.pop() # 有返回值,返回被删除的那个值 'banana' # clear 用于移除集合中的所有元素 >>> set2 = {'a', 'b'} >>> set2.clear() # 没有返回值 >>> set2 set()
2、符号运算
>>> set1 = {1,2,3} >>> set2 = {2} >>> set1 & set2 # 交集 {2} >>> set1-set2 # 差集 {1, 3} >>> set1|set2 # 并集 {1, 2, 3} >>> set1 = {1,2,3,4,5,6} >>> set2 = {1,3,5,7,9} >>> set1^set2 # 代表一个存在另一个不存在的 {2, 4, 6, 7, 9}
字典
备注:
扫描二维码关注公众号,回复:
9796472 查看本文章
-
字典的键必须是唯一的,如果重复赋值,那么会以最后一个为准
-
key :必须是不可变类型,如:元祖,字符串,数字等,但是 []、{}这种可以变的就不行
-
可变性:元素值支持增删改查
-
无序性:没有索引,只有通过键来取值
-
凡是要归类存储使用字典是最优选择
内置方法
# 创建字典 >>>dict1 = {} >>>type(dict1) <class 'dict'> #[]通过键来获取值,没有则报错 >>> d7 {'a': '222', 'b': 2, 'c': 3, 'f': 5, 'e': 6, 'name': '南北'} >>> d7['a'] '222' # key in d : key是否在d中,是返回True,否则返回False >>> d7 {'a': '222', 'b': 2, 'c': 3, 'f': 5, 'e': 6, 'name': '南北'} >>> 'a' in d7 True >>> 'aa' in d7 False # get 根据键来获取值,如果没有则返回默认值 >>> d5 = {'python':3.5, 'hello':'world'} >>> d5.get('python', None) 3.5 >>> d5.get(1,None) # keys 获取字典的键,并生成迭代器 >>> d5 {'python': 3.5, 'hello': 'world'} >>> d5.keys() dict_keys(['python', 'hello']) >>> list(d5.keys()) ['python', 'hello'] >>> tuple(d5.keys()) ('python', 'hello') # values 获取字典所有的值,返回一个可迭代对象 >>> d7 {'a': '222', 'b': 2, 'c': 3, 'f': 5, 'e': 6, 'name': '南北'} >>> d7.values() dict_values(['222', 2, 3, 5, 6, '南北']) >>> list(d7.values()) ['222', 2, 3, 5, 6, '南北'] >>> # items 循环字典所有的key和value,生成一个迭代器 >>> d5 {'python': 3.5, 'hello': 'world'} >>> d5.items() dict_items([('python', 3.5), ('hello', 'world')]) >>> list(d5.items()) [('python', 3.5), ('hello', 'world')] >>> tuple(d5.items()) (('python', 3.5), ('hello', 'world')) >>> str(d5.items()) # setdefault 无则增,有则查 >>> d7 {'a': 1, 'b': 2, 'c': 3, 'f': 5} >>> d7.setdefault('e',6) 6 >>> d7.setdefault('a', 2) 1 # update 新增字典:如果键存在那么就去修改值,如果键不存在那么就新增键值对 >>> d7.update(name='南北') # 注意第一个变量必须是形参,不能是实参 >>> d7 {'a': 1, 'b': 2, 'c': 3, 'f': 5, 'e': 6, 'name': '南北'} >>> d7.update(a='222') >>> d7 {'a': '222', 'b': 2, 'c': 3, 'f': 5, 'e': 6, 'name': '南北'} >>> d1 = {1:2,3:4} >>> d2 = {'a':'a', 'b':'b'} >>> d1.update(d2) # 可以添加多个 >>> d1 {1: 2, 3: 4, 'a': 'a', 'b': 'b'} # pop 根据键删除值,并返回被删除的对象,没有则返回默认值,如果没设置默认值则会报错 >>> d5 {'python': 3.5, 'hello': 'world'} >>> d5.pop('hello') 'world' >>> d5.pop(2,3) 3 >>> d5.pop('a') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'a' # popitem 随机删除一个键值对,并返回被删除的那个键值对 >>> d6 = {'name':'li', 'age':18} >>> d6.popitem() ('age', 18) # del 删除字典或者键值对,包括内容和定义 >>> d2 = {'a':1, 'b':2} >>> del d2['a'] >>> d2 {'b': 2} >>> del d2 >>> d2 Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'd2' is not defined >>> # clear 清空字典内容,但不清空定义 >>> d1 {'a': 1, 'b': 2} >>> d1.clear() >>> d1 {} # fromkeys 创建一个新字典,fromkeys(*args, **kwargs) 以*args中元素做字典的键,**kwargs为字典所有键对应的值 >>> d5 = {} >>> d5.fromkeys((1,2)) # 返回一个新的字典 {1: None, 2: None} >>> d5.fromkeys((3,4), 'a') {3: 'a', 4: 'a'} >>> d5.fromkeys((3,4),('b','c')) {3: ('b', 'c'), 4: ('b', 'c')} # copy 复制字典 >>> d3 = {'python':3.5, 'hello':'world'} >>> d4 = d3.copy() >>> d4 {'python': 3.5, 'hello': 'world'}