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'}

 

posted @ 2018-08-10 16:21  鬼谷神僧  阅读(239)  评论(0编辑  收藏  举报