Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

  经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦。下面将要继续什么呢?让我想想先~~~嗯,还是先整理一下近期有关Python基础知识的随笔吧。

  Python编程软件的安装与使用——Windows、Linux和Mac

  Python基础——输出[print()]与输入[input()]

  Python基础——数据类型与基本运算【主要为除法】

Python基础——字符串

Python基础——条件判断

Python基础——for/while循环

  上述六篇均为Python 3.x的基础知识。九尺高台,起于累土。学习Python就要从最基本开始,经过逐步的积累,才能有所成就。

  Python基础知识再次回顾好了,接下来该干嘛呢?这不继续Python数据结构了吗?

  上次我写了有关Python数据结构(列表、元组、字典)的3篇随笔:

  Python数据结构之一——list(列表)

  Python数据结构之二——tuple(元组)

  Python数据结构之三——dict(字典)

  本篇随笔将开始一段关于set(集合)之旅吧。

  什么是集合呢?

  说到集合,我首先想到了高中的数学。高中,人生学习中最繁忙的一段时光。直到现在,我能回忆起最多的就是学习、学习、还是读书……言归正传,高一时的数学,我们就接触到了集合。书中应该是这样定义的:

  集合:由一个或多个确定的元素所构成的整体。若x是集合A的元素,则记作xA

  集合中的元素有三个特征:

  1. 确定性:集合中的元素必须是确定的;

  2. 互异性:集合中的元素互不相同,例如:集合A={1,a},则a不能等于1);

  3. 无序性:集合中的元素没有先后之分,例如:集合{3,4,5}和{3,5,4}算作同一个集合。

  Python 3.x中的set特征与数学中类似。我们之前学过list、tuple以及dict。其实,set与dict大致相同,但set没有Value,只有key。因此,set只是一组key的集合。由于key不能重复,所以,在set中,没有重复的key。

创建集合

 1.1 创建空集合

  在集合中,创建空集合(set)必须使用函数set()。

1 #创建空集合
2 >>>a = set()
3 >>>a
4 set()
5 >>>type(a)
6 <class 'set'>

  注:不能使用{},{}用于创建空字典。

1.2 创建非空集合

  非空集合可以用大括号{}或 set() 函数来创建。

 1 #创建集合
 2 >>>a={'a','b','c','d'}
 3 >>>b=set('abcdefabcd')
 4 >>>c=set({'a':1,'b':2,'c':3})
 5 >>>d=set(['a','b','c','a'])
 6 #运行结果
 7 >>>print(a,type(a))
 8 {'c', 'd', 'b', 'a'} <class 'set'>
 9 >>>print(b,type(b))
10 {'f', 'e', 'b', 'c', 'd', 'a'} <class 'set'>
11 >>>print(c,type(c))
12 {'b', 'a','c'} <class 'set'>
13 >>>print(d,type(d))
14 {'c', 'b', 'a'} <class 'set'>

  特别地,set中的元素是无序的,并且重复元素在set中自动被过滤。

1 #set中重复元素被自动过滤
2 >>>s = {1,2,,1,2,4,4,3,3}
3 >>>s
4 {1,2,3,4}

功能属性

  set有很多很多的功能属性。你们不信?不信的话,继续往下看呗~~~

  set功能属性如下:

1 class set(object):2     """3     set() -> new empty set object4     set(iterable) -> new set object5     6     Build an unordered collection of unique elements.7     """8     def add(self, *args, **kwargs): # real signature unknown9         """10         Add an element to a set.11         12         This has no effect if the element is already present.13         """14         pass15 16     def clear(self, *args, **kwargs): # real signature unknown17         """ Remove all elements from this set. """18         pass19 20     def copy(self, *args, **kwargs): # real signature unknown21         """ Return a shallow copy of a set. """22         pass23 24     def difference(self, *args, **kwargs): # real signature unknown25         """26         Return the difference of two or more sets as a new set.27         28         (i.e. all elements that are in this set but not the others.)29         """30         pass31 32     def difference_update(self, *args, **kwargs): # real signature unknown33         """ Remove all elements of another set from this set. """34         pass35 36     def discard(self, *args, **kwargs): # real signature unknown37         """38         Remove an element from a set if it is a member.39         40         If the element is not a member, do nothing.41         """42         pass43 44     def intersection(self, *args, **kwargs): # real signature unknown45         """46         Return the intersection of two sets as a new set.47         48         (i.e. all elements that are in both sets.)49         """50         pass51 52     def intersection_update(self, *args, **kwargs): # real signature unknown53         """ Update a set with the intersection of itself and another. """54         pass55 56     def isdisjoint(self, *args, **kwargs): # real signature unknown57         """ Return True if two sets have a null intersection. """58         pass59 60     def issubset(self, *args, **kwargs): # real signature unknown61         """ Report whether another set contains this set. """62         pass63 64     def issuperset(self, *args, **kwargs): # real signature unknown65         """ Report whether this set contains another set. """66         pass67 68     def pop(self, *args, **kwargs): # real signature unknown69         """70         Remove and return an arbitrary set element.71         Raises KeyError if the set is empty.72         """73         pass74 75     def remove(self, *args, **kwargs): # real signature unknown76         """77         Remove an element from a set; it must be a member.78         79         If the element is not a member, raise a KeyError.80         """81         pass82 83     def symmetric_difference(self, *args, **kwargs): # real signature unknown84         """85         Return the symmetric difference of two sets as a new set.86         87         (i.e. all elements that are in exactly one of the sets.)88         """89         pass90 91     def symmetric_difference_update(self, *args, **kwargs): # real signature unknown92         """ Update a set with the symmetric difference of itself and another. """93         pass94 95     def union(self, *args, **kwargs): # real signature unknown96         """97         Return the union of sets as a new set.98         99         (i.e. all elements that are in either set.)
100         """
101         pass
102
103     def update(self, *args, **kwargs): # real signature unknown
104         """ Update a set with the union of itself and others. """
105         pass
106
107     def __and__(self, *args, **kwargs): # real signature unknown
108         """ Return self&value. """
109         pass
110
111     def __contains__(self, y): # real signature unknown; restored from __doc__
112         """ x.__contains__(y) <==> y in x. """
113         pass
114
115     def __eq__(self, *args, **kwargs): # real signature unknown
116         """ Return self==value. """
117         pass
118
119     def __getattribute__(self, *args, **kwargs): # real signature unknown
120         """ Return getattr(self, name). """
121         pass
122
123     def __ge__(self, *args, **kwargs): # real signature unknown
124         """ Return self>=value. """
125         pass
126
127     def __gt__(self, *args, **kwargs): # real signature unknown
128         """ Return self>value. """
129         pass
130
131     def __iand__(self, *args, **kwargs): # real signature unknown
132         """ Return self&=value. """
133         pass
134
135     def __init__(self, seq=()): # known special case of set.__init__
136         """
137         set() -> new empty set object
138         set(iterable) -> new set object
139
140         Build an unordered collection of unique elements.
141         # (copied from class doc)
142         """
143         pass
144
145     def __ior__(self, *args, **kwargs): # real signature unknown
146         """ Return self|=value. """
147         pass
148
149     def __isub__(self, *args, **kwargs): # real signature unknown
150         """ Return self-=value. """
151         pass
152
153     def __iter__(self, *args, **kwargs): # real signature unknown
154         """ Implement iter(self). """
155         pass
156
157     def __ixor__(self, *args, **kwargs): # real signature unknown
158         """ Return self^=value. """
159         pass
160
161     def __len__(self, *args, **kwargs): # real signature unknown
162         """ Return len(self). """
163         pass
164
165     def __le__(self, *args, **kwargs): # real signature unknown
166         """ Return self<=value. """
167         pass
168
169     def __lt__(self, *args, **kwargs): # real signature unknown
170         """ Return self<value. """
171         pass
172
173     @staticmethod # known case of __new__
174     def __new__(*args, **kwargs): # real signature unknown
175         """ Create and return a new object.  See help(type) for accurate signature. """
176         pass
177
178     def __ne__(self, *args, **kwargs): # real signature unknown
179         """ Return self!=value. """
180         pass
181
182     def __or__(self, *args, **kwargs): # real signature unknown
183         """ Return self|value. """
184         pass
185
186     def __rand__(self, *args, **kwargs): # real signature unknown
187         """ Return value&self. """
188         pass
189
190     def __reduce__(self, *args, **kwargs): # real signature unknown
191         """ Return state information for pickling. """
192         pass
193
194     def __repr__(self, *args, **kwargs): # real signature unknown
195         """ Return repr(self). """
196         pass
197
198     def __ror__(self, *args, **kwargs): # real signature unknown
199         """ Return value|self. """
200         pass
201
202     def __rsub__(self, *args, **kwargs): # real signature unknown
203         """ Return value-self. """
204         pass
205
206     def __rxor__(self, *args, **kwargs): # real signature unknown
207         """ Return value^self. """
208         pass
209
210     def __sizeof__(self): # real signature unknown; restored from __doc__
211         """ S.__sizeof__() -> size of S in memory, in bytes """
212         pass
213
214     def __sub__(self, *args, **kwargs): # real signature unknown
215         """ Return self-value. """
216         pass
217
218     def __xor__(self, *args, **kwargs): # real signature unknown
219         """ Return self^value. """
220         pass
221
222     __hash__ = None

set

  set功能属性虽多,但平时常用的也就那么几个。

常用属性

  1. 添加元素

  在集合中添加元素,可以使用add()方法,并且不生成一个新的集合。

 1 #添加元素:add()
 2 >>>s = {1,2,3}
 3 >>>s.add(4)
 4 >>>s
 5 {1,2,3,4}
 6 >>>s.add('g')
 7 >>>s
 8 {1,2,3,4,'g'}
 9 >>>s.add(4)
10 >>>s
11 {1,2,3,4,'g'}

  add()方法可以向set中添加元素,可以重复添加,但不会有效果。

  2. 删除元素

  set中利用remove()方法可以删除集合中的元素。

1 #删除元素
2 >>>s
3 {1,2,3,4,'g'}
4 >>>s.remove('g')
5 >>>s
6 {1,2,3,4}

  3. 清空元素

  clear()方法可以清空set中的元素。

1 #清空元素
2 >>>a = {1,2,3,4}
3 >>>b = a.clear()
4 >>>print(a,type(a))
5 set() <class 'set'>
6 >>>print(b,type(b))
7 None <class 'NoneType'>

  4. 复制元素

  copy()方法只能浅拷贝set中的元素,并生成一个新的集合。

 1 #浅拷贝:copy()
 2 >>>a = {1,(9,2),3}
 3 >>>b = a.copy()
 4 >>>print(a,id(a))
 5 {(9, 2), 1, 3} 2097937619880
 6 >>>print(b,id(b))
 7 {(9, 2), 1, 3} 2097937620776
 8
 9 #赋值
10 >>>s = {1,2,3,4}
11 >>>d = s
12 >>>print(s,id(s))
13 {1, 2, 3, 4} 2097937785128
14 >>>print(d,id(d))
15 {1, 2, 3, 4} 2097937785128

  5. pop()

  pop()方法用于从set中随机取一个元素。记住,是随机的~~~

1 #pop()方法
2 >>>s = {1,2,3,4,5,'g','s'}
3 >>>s.pop()
4 'g'
5 >>>s.pop()
6 3

  6. set集合操作

  set与数学中的集合类似,是无序的和无重复元素的集合。因此,在Python中,set可以进行交集、并集、补集等操作。

Python set集合操作
数学符号 Python符号 含义
- 或\ - 差集,相对补集
& 交集
| 并集
!= 不等于
== 等于
in 是成员关系
not in 非成员关系
 1 #set集合操作
 2 >>>s = {1,2,3,4}
 3 >>>d = {2.3.5.6}
 4 >>>s & d
 5 {2.3}
 6 >>>s | d
 7 {1,2,3,4,5,6}
 8 >>>s - d
 9 {1,4}
10 >>>d - s
11 {5,6}

  set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。因此,最常用的key是字符串。

“思想者”

  set中存储着key,集合中不能放入可变的对象。之前的文章也说过:tuple是不可变的,而list是可变的。因此,set中是可以存储tuple的。这是真的吗?

  时间是检验真理的唯一标准。下面请看示例代码:

 1 #tuple可以作为集合中的元素
 2 >>>s = {(1,),(1,2,3),1,2,'g'}
 3 >>>s
 4 {(1,),(1,2,3),1,2,'g'}
 5
 6 #tuple也有失灵的时候
 7 >>>t = (1,2,[1,2,3],4)
 8 >>>type(t)
 9 <class 'tuple'>
10 >>>d = {1,2,(1,2,[1,2,3],4)}
11 Traceback (most recent call last):
12   File "<stdin>", line 1, in <module>
13 TypeError: unhashable type: 'list'

  为什么会有错误呢?我也不清楚哎~~~这里面的道道很深,请读者细细体会。

  set是一种数据结构。如果要详细的介绍set,我应该可以去出书了。这篇随笔只是起到入门的效果。

  正所谓“师傅”领进门,修行靠大家嘛!

出处:http://www.cnblogs.com/SmallWZQ/p/8488744.html

Python数据结构之四——set(集合)相关推荐

  1. Python四大金刚之四:集合

    引言 一.集合的创建方式 #使用{} s = {1,2,3,4,3,2} #不允许重复元素 print(s)#使用内置函数set() s = set(range(6)) print(s) print( ...

  2. Python数据结构 四种链表的集合

    python数据结构四个链表的集合 结点的创建 import os# 创建节点 class Node:def __init__(self, data):self.data = dataself.nex ...

  3. python数据结构包括什么_Python中的数据结构详解

    概述 在深入研究数据科学和模型构建之前,Python中的数据结构是一个需要学习的关键内容 了解Python提供的不同数据结构,包括列表.元组等 介绍 数据结构听起来是一个非常直截了当的话题,但许多数据 ...

  4. python数据结构树和二叉树,python数据结构树和二叉树简介

    一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树. 树的递归定义: 树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树 ...

  5. 第五章 Python数据结构

    第五章 Python数据结构 本章更详细地讨论一些已经讲过的数据类型的使用,并引入一些新的类型. 5.1 列表 列表数据类型还有其它一些方法.下面是列表对象的所有方法: insert(i, x) -- ...

  6. Python数据结构与算法--数据类型

    从数据类型开始 Python支持面向对象的编程范式,这意味着Python把数据看成解决问题的关键. 在Python中,类似其他的面向对象的编程语言, 我们定义一个类,用来描述数据是什么 (状态) 和数 ...

  7. Python数据结构学习笔记——队列和双端队列

    目录 一.队列的定义 二.队列 实现步骤分析 三.队列的Python实现代码 四.队列的应用 六人传土豆游戏 五.双端队列的定义 六.双端队列 实现步骤分析 七.双端队列的Python实现代码 八.双 ...

  8. Python数据结构学习笔记——栈

    目录 一.栈的定义和特性 (一)栈的定义 (二)栈的反转特性 二.实现分析步骤 三.栈的Python实现代码 四.栈的应用 (一)匹配圆括号 (二)匹配符号 (三)模2除法(十进制转二进制) (四)进 ...

  9. python数据结构的应用场景不包括,Python 数据结构学习

    Python 数据结构学习 列表 list.append(x) 在列表的末尾添加一个元素.相当于 a[len(a):] = [x] . list.extend(iterable) 使用可迭代对象中的所 ...

最新文章

  1. Weblogic java.lang.OutOfMemoryError: PermGen space
  2. React 的 PureComponent Vs Component
  3. cad中拖动文字时卡顿_技巧CAD制图的一百多个技巧,都学会你就逆天了!(下)...
  4. Redis命令:EXPIREAT key timestamp(设置key在某一时间过期)
  5. cdn厂商 同兴万点_同兴万点:TXNetworks和CDNetworks让我们傻傻分不清
  6. 星之卡比机器人汉化_NS国行或迎来鸡肋的脑锻炼和大金刚!好消息是卡比也快了...
  7. php7 str split,PHP7.4新特性预览
  8. mysql语句1=1_mysql - “where 1 = 1”语句
  9. mybatis redis_基于人事年假管理的系统springboot+mybatis+redis+拦截器
  10. 我的csdn的第三课的总结———淮师杨建波
  11. 群晖 映射 服务器,如何把群晖共享目录映射到Windows系统上
  12. Windows Server2008 R2搭建域环境(步骤最详细)
  13. 基于典型相关性分析(CCA)的多视图学习方法综述
  14. mysql必会比知电子_mysql必知必会(三)
  15. linux daemon 安装教程,Linux daemontools安装及使用(示例代码)
  16. 这是谁写的代码,给我站出来,保证不打死你!
  17. bwa 软件用法简介
  18. 模具铜公的加工方法与质量鉴别
  19. JVM之压缩指针——Compressed oops
  20. Grails3 邮件功能(可发送OutLook会议邀请邮件)

热门文章

  1. python 示例_Python日历类| yeardayscalendar()方法与示例
  2. bs架构 erp 进销存_从依赖经验到用柔性ERP,企业少走了多少弯路?
  3. PHP的foeach用法
  4. java pdf添加图片水印图片_Java 在PDF中添加文本水印、图片水印
  5. UVA 10891——Game of Sum
  6. 为了更好——关于博客搬迁的说明
  7. HDU中一些DP的题目分类
  8. xpath 简单小记
  9. 关于jffs2文件系统如何掉电保护
  10. x86异常处理与中断机制(1)概述中断的来源和处理方式