zoukankan      html  css  js  c++  java
  • 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'}
  • 相关阅读:
    015.Python基础--模块
    014.Python基础--格式化输入输出
    013.Python基础--异常/错误处理
    012.Python基础--装饰器深入
    011.Python基础--装饰器
    010.Python基础--生成器
    汇编的角度分析指针-03(字符串深入理解)
    汇编的角度分析C语言的指针-02
    汇编的角度分析C语言的switch语句
    分析C语言的字节对齐
  • 原文地址:https://www.cnblogs.com/guiguxiaosheng/p/9455802.html
Copyright © 2011-2022 走看看