Python学习笔记:集合(set)基本内容

1.创建集合。

集合是无序的,元素不重复的一种序列。

set() 创建,集合可变。

>>> s = set('abcdef')
>>> s
{'d', 'c', 'b', 'a', 'e', 'f'}
>>> type(s)
<class 'set'>

frozenset() 创建是不可变的集合,存在哈希值,可以做字典的key。

>>> s = frozenset('abcdef')
>>> s
frozenset({'d', 'c', 'b', 'a', 'e', 'f'})
>>> type(s)
<class 'frozenset'>
>>> s = set('a')
>>> s
{'a'}
>>> D = {s:1}  <span style="white-space:pre">			</span>#错误
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    D = {s:1}
TypeError: unhashable type: 'set'
>>> s = frozenset('a')
>>> s
frozenset({'a'})
>>> D = {s:1}<span style="white-space:pre">			</span>#正确
>>> D
{frozenset({'a'}): 1}

不管是set还是frozenset都无法创建一个整数集合。

>>> s = set(1)<span style="white-space:pre">			</span>#错误
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    s = set(1)
TypeError: 'int' object is not iterable
>>> s = set('1')<span style="white-space:pre">		</span>#正确
>>> s
{'1'}

2.访问集合。

因为集合是无序的可哈希的值,所以不能使用索引值访问集合,可以用循环遍历集合。

>>> s = set('abcdef')
>>> s
{'d', 'c', 'b', 'a', 'e', 'f'}
>>> for i in s:
	print(i)

d
c
b
a
e
f

3.更新集合。

可以用函数来添加集合成员,或者删除集合成员。

添加

add()

>>> s = set('abc')
>>> s
{'b', 'c', 'a'}
>>> s.add('d')
>>> s
{'d', 'b', 'c', 'a'}

update()

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> s.update('de')
>>> s
{'e', 'd', 'a', 'b', 'c'}

添加重复元素无变化。

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> s.add('a')
>>> s
{'a', 'b', 'c'}
>>> s.update('a')
>>> s
{'a', 'b', 'c'}

删除

remove() 只能删除单个元素。

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> s.remove('a')
>>> s
{'b', 'c'}

del  删除整个集合

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> del s
>>> s
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    s
NameError: name 's' is not defined

frozenset() 创建的不可变。

4.操作符

in

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> 'a' in s
True
>>> 'e' in s
False

not in

>>> s = set('abc')
>>> s
{'a', 'b', 'c'}
>>> 'a' not in s
False
>>> 'e' not in s
True

> < ==

>>> s1 = set('a')
>>> s2 = set('abc')
>>> s1
{'a'}
>>> s2
{'a', 'b', 'c'}
>>> s1 < s2
True
>>> s1 > s2
False
>>> s1 == s2
False

|  取两个集合的并集

>>> s1 = set('123')
>>> s2 = set('abc')
>>> s1
{'2', '1', '3'}
>>> s2
{'a', 'b', 'c'}
>>> s1 | s2
{'2', '3', 'c', '1', 'a', 'b'}

& 取两个集合的交集

>>> s1 = set('aaa123')
>>> s2 = set('aaa456')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'5', 'a', '4', '6'}
>>> s1 & s2
{'a'}

^ 取两个集合的异或元素(只在一个集合中存在的元素)

>>> s1 = set('aaa123')
>>> s2 = set('aaa456')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'5', 'a', '4', '6'}
>>> s1 ^ s2
{'4', '2', '5', '3', '6', '1'}

-  取两个集合的差补(指一个有另一个没有的元素)

>>> s1 = set('abc')
>>> s2 = set('a')
>>> s1
{'a', 'b', 'c'}
>>> s2
{'a'}
>>> s1 - s2
{'b', 'c'}
>>> s2 - s1
set()

|= 取两个集合的并集赋值给第一个集合。

>>> s1 = set('a')
>>> s2 = set('1')
>>> s1
{'a'}
s
>>> 2
2
>>> s1 |= s2
>>> s1
{'1', 'a'}
>>> s2
{'1'}

&= 取两个集合的交集赋值给第一个集合。

>>> s1 = set('aaa123')
>>> s2 = set('aaa456')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'5', 'a', '4', '6'}
>>> s1 &= s2
>>> s1
{'a'}
>>> s2
{'5', 'a', '4', '6'}

-= 去两个集合的差补赋值给第一个集合

>>> s1 = set('a123')
>>> s2 = set('a')
>>> s1
{'3', '2', '1', 'a'}
>>> s2
{'a'}
>>> s1 -= s2
>>> s1
{'3', '2', '1'}
>>> s2
{'a'}

^=  取两个集合的异或赋值给第一个集合

>>> s1 = set('abc111')
>>> s2 = set('def111')
>>> s1
{'1', 'a', 'b', 'c'}
>>> s2
{'d', 'f', '1', 'e'}
>>> s1 ^= s2
>>> s1
{'d', 'f', 'e', 'c', 'a', 'b'}
>>> s2
{'d', 'f', '1', 'e'}
时间: 2024-10-04 09:34:13

Python学习笔记:集合(set)基本内容的相关文章

Python 学习笔记 - 集合和文件操作

Set 集合 Set是一个无序而且不重复的元素集合.下面看看他有哪些基本功能 创建集合 >>> s1 = {11,22} s2 = set() s3 = set([11,22,33,4]) print(s1,s2,s3) ------------------- {11, 22} set() {33, 11, 4, 22} 把列表转换成集合,注意列表中重复的元素只保留一次 >>> li = [11,22,11,22] s1 = set(li) print(s1) ----

python学习笔记集合(七)

集合 set(集合)是一个无需不重复的元素数据集,对比列表的区别首先是无需的,不可以使用索引进行访问,另外一个特点是不能有重复数据. 项目开发中,集合主要用于数据元素去重和测试是否存在.集合还支持一些数学上的运算,例如:union(联合).intersection(交).difference(差).symmetric difference(对称差集). 创建集合:集合使用大括号或者set函数创建,需要注意空的集合不能使用{}创建,只能使用set函数,因为{}创建的是一个空字典. >> cour

【Python学习笔记】集合

概述 集合的一般操作 内建函数进行标准操作集合 数学运算符进行标准操作集合 集合的应用 概述 python的集合(set)是无序不重复元素集,是一种容器.集合(set)中的元素必须是不可变对象,即可用被哈希,这和字典的键是一样的,所以列表.字典等可变对象不可作为set的元素.集合不提供索引或切片操作,即对象不存在相关的键值.python中的集合分为两种:set是可变的集合,frozenset是不可变的集合. 集合的创建使用关键字set或frozenset, 参数可以是列表.字符串或元组等不可变对

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

python学习笔记[3]-邮件的发送

本文摘抄自:http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执行

Python 学习笔记 6

6.1 字典 字典就是一个关联数组(或者称为哈希表).它是通过关键字索引的对象的集合.使用大括号{}来创建一个字典. print "字典" dic={ "username":"beazley", "home":"/home/beazley", "uid":500 } print dic uu=dic["username"] dd=dic["home"

Python学习笔记_Chapter 4数据保存到文件

1. What For 将基于内存的数据存储到磁盘上,达到持续存储. 2. HOW 方法一: 将数据写到文件中 常规的处理方式 1 #file.x被打开的文件,model打开文件的方式 2 out=open('file.x','model') 3 #print将item写入到file指示的文件中,item可以是字符串或列表等 4 print(item,file=out) 5 #close是必须的,起到刷新输出的作用 6 out.close() open('file','model')中model