python3基础知识自学笔记3-集合字典元组
元组(tuple) 元组与列表类似,不同之处在于元组的元素不能修改 元组使用小括号,列表使用方括号 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 没有 append(),insert() 这样进行修改的方法,其他方法都与列表一样 字典中的键必须是唯一的同时不可变的,值则没有限制 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用 访问元组 访问元组的方式与列表是一致的。 元组的元素可以直接赋值给多个变量,但变量数必须与元素数量一致。 >>> a, b, c = (1, 2, 3) >>> print(a,b,c) 1 2 3 组合元组 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合 >>> tup1 = (12, 34.56); >>> tup2 = ('abc', 'xyz') >>> tup3 = tup1 + tup2; >>> tup3 (12, 34.56, 'abc', 'xyz') 删除元组 元组中的元素值是不允许删除的,但我们可以使用 del 语句来删除整个元组 元组函数 len(tuple) 元组元素个数 max(tuple) 元组元素中的最大值 min(tuple) 元组元素中的最小值 tuple(tuple) 将列表转换为元组 元组推导式 >>> t = 1, 2, 3 >>> print(t) (1, 2, 3) >>> u = t, (3, 4, 5) >>> print(u) ((1, 2, 3), (3, 4, 5)) 字典(dict) 字典是另一种可变容器模型,可存储任意类型对象 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 键必须是唯一的,但值则不必 值可以是任意数据类型 键必须是不可变的,例如:数字、字符串、元组可以,但列表就不行 如果用字典里没有的键访问数据,会报错 字典的元素没有顺序,不能通过下标引用元素,通过键来引用 字典内部存放的顺序和 key 放入的顺序是没有关系的 格式如下: d = {key1 : value1, key2 : value2 } 访问字典 >>> dis = {'a': 1, 'b': [1, 2, 3]} >>> print(dis['b'][2]) 3 修改字典 >>> dis = {'a': 1, 'b': [1, 2, 3], 9: {'name': 'hello'}} >>> dis[9]['name'] = 999 >>> print(dis) {'a': 1, 'b': [1, 2, 3], 9: {'name': 999}} 删除字典 用 del 语句删除字典或字典的元素。 >>> dis = {'a': 1, 'b': [1, 2, 3], 9: {'name': 'hello'}} >>> del dis[9]['name'] >>> print(dis) {'a': 1, 'b': [1, 2, 3], 9: {}} >>> del dis >>> dis Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'dis' is not defined 字典函数 len(dict) 计算字典元素个数,即键的总数 str(dict) 输出字典,以可打印的字符串表示 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型 key in dict 判断键是否存在于字典中 字典方法 dict.clear() 删除字典内所有元素 dict.copy() 返回一个字典的浅复制 dict.fromkeys(seq[, value]) 创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值 dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回默认值 dict.items() 以列表形式返回可遍历的(键, 值)元组数组 dict.keys() 以列表返回一个字典所有的键 dict.values() 以列表返回字典中的所有值 dict.setdefault(key, default=None) 如果 key 在字典中,返回对应的值。 如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。 dict.update(dict2) 把字典参数 dict2 的键/值对更新到字典 dict 里 >>> dic1 = {'a': 'a'} >>> dic2 = {9: 9, 'a': 'b'} >>> dic1.update(dic2) >>> print(dic1) {'a': 'b', 9: 9} dict.pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key 值必须给出,否则返回 default 值。 dict.popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对) 字典推导式 构造函数 dict() 直接从键值对元组列表中构建字典。如果有固定的模式,列表推导式指定特定的键值对: >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) {'sape': 4139, 'guido': 4127, 'jack': 4098} 字典推导可以用来创建任意键和值的表达式词典: >>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36} 如果关键字只是简单的字符串,使用关键字参数指定键值对有时候更方便: >>> dict(sape=4139, guido=4127, jack=4098) {'sape': 4139, 'guido': 4127, 'jack': 4098} 集合(set) 集合是一个无序不重复元素的序列 创建集合 可以使用大括号 {} 或者 set() 函数创建集合 创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典 set(value) 方式创建集合,value 可以是字符串、列表、元组、字典等序列类型 创建、添加、修改等操作,集合会自动去重 >>> {1, 2, 1, 3} {1, 2, 3} >>> set('12345') {'5', '2', '4', '1', '3'} >>> set([1, 'a', 23.4]) {'a', 1, 23.4} >>> set((1, 'a', 23.4)) {'a', 1, 23.4} >>> set({1:1, 'b': 9}) {1, 'b'} 添加元素 将元素 val 添加到集合 set 中,如果元素已存在,则不进行任何操作: set.add(val) 也可以用 update 方法批量添加元素,参数可以是列表,元组,字典等: set.update(list1, list2,...) 移除元素 如果存在元素 val 则移除,不存在就报错: set.remove(val) 如果存在元素 val 则移除,不存在也不会报错: set.discard(val) 随机移除一个元素: set.pop() 元素个数 与其他序列一样,可以用 len(set) 获取集合的元素个数。 清空集合 set.clear() set = set() 判断元素是否存在 val in set 其他方法: set.copy() 复制集合 set.difference(set2) 求差集,在 set 中却不在 set2 中 set.intersection(set2) 求交集,同时存在于 set 和 set2 中 set.union(set2) 求并集,所有 set 和 set2 的元素 set.symmetric_difference(set2) 求对称差集,不同时出现在两个集合中的元素 set.isdisjoint(set2) 如果两个集合没有相同的元素,返回 True set.issubset(set2) 如果 set 是 set2 的一个子集,返回 True set.issuperset(set2) 如果 set 是 set2 的一个超集,返回 True 字典(dict) 字典是另一种可变容器模型,可存储任意类型对象 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 键必须是唯一的,但值则不必 值可以是任意数据类型 键必须是不可变的,例如:数字、字符串、元组可以,但列表就不行 如果用字典里没有的键访问数据,会报错 字典的元素没有顺序,不能通过下标引用元素,通过键来引用 字典内部存放的顺序和 key 放入的顺序是没有关系的 格式如下: d = {key1 : value1, key2 : value2 } 访问字典 >>> dis = {'a': 1, 'b': [1, 2, 3]} >>> print(dis['b'][2]) 3 修改字典 >>> dis = {'a': 1, 'b': [1, 2, 3], 9: {'name': 'hello'}} >>> dis[9]['name'] = 999 >>> dis {'a': 1, 'b': [1, 2, 3], 9: {'name': 999}} 删除字典 用 del 语句删除字典或字典的元素。 >>> dis = {'a': 1, 'b': [1, 2, 3], 9: {'name': 'hello'}} >>> del dis[9]['name'] >>> dis {'a': 1, 'b': [1, 2, 3], 9: {}} >>> del dis >>> dis Traceback (most recent call last): File "<stdin>", line 1, in <module> 字典函数 len(dict) 计算字典元素个数,即键的总数 str(dict) 输出字典,以可打印的字符串表示 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型 key in dict 判断键是否存在于字典中 字典方法 dict.clear() 删除字典内所有元素 dict.copy() 返回一个字典的浅复制 dict.fromkeys(seq[, value]) 创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值 dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回默认值 dict.items() 以列表形式返回可遍历的(键, 值)元组数组 dict.keys() 以列表返回一个字典所有的键 dict.values() 以列表返回字典中的所有值 dict.setdefault(key, default=None) 如果 key 在字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default, 并返回 default ,default 默认值为 None。 dict.update(dict2) 把字典参数 dict2 的键/值对更新到字典 dict 里 >>> dic1 = {'a': 'a'} >>> dic2 = {9: 9, 'a': 'b'} >>> dic1.update(dic2) >>> dic1 {'a': 'b', 9: 9} dict.pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。 key 值必须给出,否则返回 default 值。 dict.popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对) 字典推导式 构造函数 dict() 直接从键值对元组列表中构建字典。 如果有固定的模式,列表推导式指定特定的键值对: >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) {'sape': 4139, 'guido': 4127, 'jack': 4098} 此外,字典推导可以用来创建任意键和值的表达式词典: >>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36} 如果关键字只是简单的字符串,使用关键字参数指定键值对有时候更方便: >>> dict(sape=4139, guido=4127, jack=4098) {'sape': 4139, 'guido': 4127, 'jack': 4098} 集合(set) 集合是一个无序不重复元素的序列 创建集合 可以使用大括号 {} 或者 set() 函数创建集合 创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典 set(value) 方式创建集合,value 可以是字符串、列表、元组、字典等序列类型 创建、添加、修改等操作,集合会自动去重 >>> {1, 2, 1, 3} {1, 2, 3} >>> set('12345') {'1', '5', '2', '3', '4'} >>> set([1, 'a', 23.4]) {1, 23.4, 'a'} >>> set((1, 'a', 23.4)) {1, 23.4, 'a'} >>> set({1:1, 'b': 9}) {1, 'b'} 添加元素 将元素 val 添加到集合 set 中,如果元素已存在,则不进行任何操作: set.add(val) 也可以用 update 方法批量添加元素,参数可以是列表,元组,字典等: set.update(list1, list2,...) 移除元素 如果存在元素 val 则移除,不存在就报错: set.remove(val) 如果存在元素 val 则移除,不存在也不会报错: set.discard(val) 随机移除一个元素: set.pop() 元素个数 与其他序列一样,可以用 len(set) 获取集合的元素个数。 清空集合 set.clear() set = set() 判断元素是否存在 val in set 其他方法 set.copy() 复制集合 set.difference(set2) 求差集,在 set 中却不在 set2 中 set.intersection(set2) 求交集,同时存在于 set 和 set2 中 set.union(set2) 求并集,所有 set 和 set2 的元素 set.symmetric_difference(set2) 求对称差集,不同时出现在两个集合中的元素 set.isdisjoint(set2) 如果两个集合没有相同的元素,返回 True set.issubset(set2) 如果 set 是 set2 的一个子集,返回 True set.issuperset(set2) 如果 set 是 set2 的一个超集,返回 True >>> a = set('abracadabra') >>> b = set('alacazam') >>> print(a) {'b', 'r', 'd', 'c', 'a'} >>> a-b {'d', 'b', 'r'} >>> a|b {'m', 'b', 'z', 'l', 'r', 'd', 'c', 'a'} >>> a&b {'c', 'a'} >>> a^b {'m', 'b', 'z', 'r', 'd', 'l'} 集合推导式 >>> a = {x for x in 'abracadabra' if x not in 'abc'} >>> print(a) {'d', 'r'}