Python学习笔记第三周

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记第三周相关的知识,希望对你有一定的参考价值。

一、基础概念

1、集合:

集合是一个无序的、不重复的数据租户,它的作用:

1、去重复、把一个列表变成集合,就会自动去重

2、关系测试,测试两组数据之间的交集、差集、并集等关系

  集合的方法:

    a、设置集合

>>> list_1 = [1,3,5,6,77,3,12]   #列表1
>>> list_2 = [1,3,88,4,33,77]  #列表2
>>> list_1 = set(list_1)  #通过set方法可以将列表变为集合
>>> list_1
{1, 3, 5, 6, 12, 77}  #集合list_1现在已经去重
>>> list_2 = set(list_2)
>>> list_2
{1, 33, 3, 4, 77, 88}
>>>print(list_1,type(list_1)) #打印list_1类型,发现为set类型,证明为集合

{1, 3, 5, 6, 12, 77} <class ‘set‘>

    

    b、取交集 intersection(list_1  list_2共有的元素)

>>> list_1.intersection(list_2)     
{1, 3, 77}
>>> print(list_1  & list_2)
{1, 3, 77}
#上述两种方法均可以取出list_1与list_2的交集

    c、取并集union(list_1 与list_2中全部去重元素)

>>> list_1.union(list_2)                  
{1, 33, 3, 4, 5, 6, 12, 77, 88}
>>> list_1  | list_2
{1, 33, 3, 4, 5, 6, 12, 77, 88}
#上述两种方法取两个集合的全部去重元素

    d、取差集(差集是一个集合有,但是另一个集合没有的元素,所以差集可以得到两种不同的结果)

    

>>> list_1.difference(list_2) #list_1中存在但是list_2中不存在
{12, 5, 6}
>>> list_2.difference(list_1) ##list_2中存在但是list_1中不存在
{88, 33, 4}

>>> list_1 - list_2
{12, 5, 6}
>>> list_2 - list_1
{88, 33, 4}

    e、判断子集(判断一个集合是否在另一个集合中)

>>> list_3 = set([1,3])
>>> list_3.issubset(list_2)
True
>>> list_3.issubset(list_1)
True

    f、判断父集

>>> list_1.issuperset(list_3)
True

    g、对称差集symmetri_difference(去掉list_1与list_2的交集后存入其他剩余元素)

>>> list_1.symmetric_difference(list_2)
{33, 4, 5, 6, 88, 12}
>>> list_1 ^ list_2
{33, 4, 5, 6, 88, 12}

   

  基本操作:

    a、添加(集合操作没有插入动作,只能添加)

>>> list_1
{1, 3, 5, 6, 12, 77}
>>> list_1.add(999)    #添加单项
>>> list_1.add(wang)
>>> list_1
{1, 3, 5, 6, 999, 12, 77, wang}
>>> list_1.update([alex,john,tom])  #添加多项
>>> list_1
{1, 3, 5, 6, 999, 12, 77, john, tom, wang, alex}

    b、删除

>>> list_1
{1, 3, 5, 6, 999, 12, 77, john, tom, wang, alex}
>>> list_1.remove(999)  #通过remove方法删除,删除后不显示删除项,删除需要明确指定删除项的内容,因为集合是无序的,没有索引的概念
>>> list_1
{1, 3, 5, 6, 12, 77, john, tom, wang, alex}
>>> list_1.remove(wang)  #针对字符串需要加引号
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name wang is not defined
>>> list_1.remove(wang)
>>> list_1
{1, 3, 5, 6, 12, 77, john, tom, alex}
>>> list_1.pop()  #pop方法属于随机删除,删除后显示删除的内容
1
>>> list_1.pop()
3
>>> list_1.pop()
5
>>> list_1.pop()
6
>>> list_1.pop()
12
>>> list_1.pop()
77
>>> list_1.pop()
john
>>> list_1
{tom, alex}

    c、discard删除

>>> list_1
{wang, 1, 3, 5, 6, 999, 12, 77, john, tom, alex}
>>> list_1.discard(999)   
>>> list_1
{wang, 1, 3, 5, 6, 12, 77, john, tom, alex}
>>> list_1.discard(888)    #discard与remove的不同之处在于,discard如果是删除不存在的内容,不会报错,但是remove会报错
>>> list_1.remove(999)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 999

    d、长度len

>>> len(list_1)
10
>>> list_1
{wang, 1, 3, 5, 6, 12, 77, john, tom, alex}

    e、成员判断(in 和not in)

>>> list_1
{wang, 1, 3, 5, 6, 12, 77, john, tom, alex}
>>> wang in list_1
True
>>> 11 in list_1      
False
>>> 11 not in list_1
True

    f、拷贝(和list一样,都属于浅拷贝)

 






以上是关于Python学习笔记第三周的主要内容,如果未能解决你的问题,请参考以下文章

Python第三周 学习笔记

第三周python学习笔记 set 集

Python学习笔记第十三周

Linux内核分析——第三周学习笔记20135308

Python学习-第三周:流程控制

第三周学习笔记