day3 set 集合知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day3 set 集合知识相关的知识,希望对你有一定的参考价值。
集合的特点:无序的,不重复,可以嵌套
这是集合
{1,2,3,4,5}
这是字典
{"name":"wangfei", "age":18}
创建一个集合,方法有3种
方法一
>>> s1 = {"123", "456"} >>> type(s1) <class ‘set‘>
方法二
创建一个空的集合
>>> s2 = set() >>> type(s2) <class ‘set‘>
方法三
# 原理:list调用__init__,然后进行一个for循环
>>> list = [1,2,3,4,5,6] >>> s3 = set(list) >>> print(s3) {1, 2, 3, 4, 5, 6} >>> print(type(s3)) <class ‘set‘>
拓展:
# 将元组转换为列表
letter = ("a", "b", "c", "d") li = (list(letter)) print(type(li))
# 集合的功能(特性就是不重复)
>>> s = set() >>> s.add("a") >>> s.add("b") >>> s.add("c") >>> s {‘b‘, ‘a‘, ‘c‘} >>> s.add("c") >>> s.add("c") >>> s {‘b‘, ‘a‘, ‘c‘}
# 添加了多个c,查看发现还是只有一个c
>>> s {‘b‘, ‘a‘, ‘c‘} >>>
# a中存在,b中不存在
>>> s1 = {11,22,33} >>> s2 = {22,33,44} >>> s3 = s1.difference(s2) >>> print(s3) {11}
# 对称差积;a中存在b中不存在的和b中存在a中不存在的
>>> s4 = s1.symmetric_difference(s2) >>> print(s4) {11, 44}
# 将a中存在的,b中不存在的值,更新到a中去。
>>> s1.difference_update(s2) >>> print(s1) {11}
# 将a和b的对称差积更新到a中去
>>> s1.symmetric_difference_update(s2) >>> print(s1) {11, 44}
# 移除集合中的值,有就移除,没有也不报错
>>> s1 {33, 11, 22} >>> s1.discard(11) # 移除s1的元素11 >>> s1 {33, 22} >>> s1.discard(22) # 移除已经移除的值,不会报错 >>>
# 移除集合中的值,有就移除,没有就报错
>>> s2 {33, 44, 22} >>> s2.remove(22) # 有对应的数值,正常的移除 >>> s2.remove(22) # 没有对应的数值移除就会报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 22 >>>
# 使用pop移除集合的值
# 需要注意的是:pop移除值时,是随机的
# 集合是无序的,将移除的值赋予ret然后打印出来,于是就知道了我移除的值是哪一个。
>>> s1 = {11,22,33} >>> ret = s1.pop() >>> ret 33
# 求交集 s1和s2
>>> s1 = {11,22,33} >>> s2 = {44,22,33} >>> s1.intersection(s2) {33, 22} >>>
# 将s1和s2的交集更新到s1中
>>> s1.intersection_update(s2) >>> s1 {33, 22}
# 求s1和s2的并集
>>> s1 {33, 11, 22} >>> s2 {33, 44, 22} >>> s1.union(s2) {33, 22, 11, 44} >>>
# update可以接受一个被迭代(for 循环)的东西。
>>> li = [5,6,7,8,9] >>> se = (5,6,7,8,9) >>> st = "wangfei" >>> s1.update(li) >>> print(s1) {8, 9, 5, 6, 7}
# 原理是做个迭代。
for i in "wangfei": s1.update(i)
练习
# 内存槽位
# 要求:1、删除那几个槽位?2、更新那几个槽位?3、增加哪几个槽位?
old_dic = { "#1":8, "#2":4, "#4":2 } new_dic = { "#1":4, "#2":4, "#3":2 }
>>> old_set = set(old_dic.keys()) >>> new_set = set(new_dic.keys())
# 1、 删除槽位 ,a里存在的,b里不存在的
>>> del_set =old_set.difference(new_set) >>> print(del_set) {‘#4‘}
# 2、更新槽位 ,a里有的,b里也有的。求得是交集
>>> update_set = old_set.intersection(new_set) >>> print(update_set) {‘#1‘, ‘#2‘}
# 3、增加槽位。新的槽位里有,但是旧的槽位里面没有的。
>>> add_set = new_set.difference(old_set) >>> print(add_set) {‘#3‘}
本文出自 “大麦茶” 博客,请务必保留此出处http://damaicha.blog.51cto.com/6046098/1898494
以上是关于day3 set 集合知识的主要内容,如果未能解决你的问题,请参考以下文章