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 集合知识的主要内容,如果未能解决你的问题,请参考以下文章

day3 集合set()实例分析

Python Day3 集合 函数 文件操作

Day3 set集合函数和装饰器

python基础day3

python学习笔记-Day3

day3