码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习笔记第三周

时间:2017-01-26 11:30:25      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:mod   call   关系   不同   ace   remove   mos   拷贝   color   

一、基础概念

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学习笔记第三周

标签:mod   call   关系   不同   ace   remove   mos   拷贝   color   

原文地址:http://www.cnblogs.com/xiaopi-python/p/6351391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!