集合

简介

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.

sets 支持 x in set, len(set), 和 for x in set。

集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

作为一个无序的集合,sets 不记录元素位置或者插入点。因此,sets 不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。

set为可变集合

frozenset为固定集合

可变集合特有的方法: add, remove, discard, pop, clear, 这些接受对象的方法, 参数必须是可哈希的

声明

用集合的工厂方法 set()和 frozenset():

set

>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])

frozenset

>>> b = frozenset([1,2,3,2])
>>> b
frozenset([1, 2, 3])
>>> b.add(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'

Set 和 ImmutableSet

字符串->字符集

>>> set('hello')
set(['h', 'e', 'l', 'o'])

列表/元组->集合

>>> set([1,2,3,2,1])
set([1, 2, 3])
>>> set((1,2,3,2,1))
set([1, 2, 3])

甚至是 字典->集合

>>> a = {'name':'tom','age':22,'score':22}
>>> set(a)
set(['age', 'score', 'name'])

常用操作

成员关系

>>> h = set('hello')
>>> h
set(['h', 'e', 'l', 'o'])
>>> 'l' in h
True
>>> 'l' not in h
False

新增删除

新增单个元素 s.add(x)

向 set “s”中增加元素 x

>>> a = set([1,2,3,4,2])
>>> a
set([1, 2, 3, 4])
>>> a.add(2)
>>> a
set([1, 2, 3, 4])
>>> a.add(5)
>>> a
set([1, 2, 3, 4, 5])

新增多个元素

s.update(t)

s |= t

>>> a = set([1,2,3])
>>> b = set([2,3,4])
>>> a.update(b)
>>> a
set([1, 2, 3, 4])
>>> b
set([2, 3, 4])

删除

s.remove(x)

从 set “s”中删除元素 x, 如果不存在则引发 KeyError

>>> a
set([1, 2, 3, 4, 5])
>>> a.remove(4)
>>> a
set([1, 2, 3, 5])
>>> a.remove(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4

s.discard(x)

如果在 set “s”中存在元素 x, 则删除

>>> a
set([1, 2, 3, 5])
>>> a.discard(3)
>>> a
set([1, 2, 5])
>>> a.discard(3)
>>> a
set([1, 2, 5])

s.pop()

删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError

>>> a
set([1, 5])
>>> a.pop()
1
>>> a.pop()
5
>>> a.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'pop from an empty set'

s.clear()

删除 set “s”中的所有元素

>>> a
set([1, 2, 3, 4])
>>> a.clear()
>>> a
set([]) >>> b = set([1,2,3])
>>> del b

集合间操作

注意,集合操作可以通过函数进行,也存在等价的运算符

1.交集

s.union(t) 等价 s | t

返回一个新的 set 包含 s 和 t 中的每一个元素

2.并集

s.intersection(t) 等价 s & t

返回一个新的 set 包含 s 和 t 中的公共元素

3.差集

s.difference(t) 等价 s - t

返回一个新的 set 包含 s 中有但是 t 中没有的元素

4.差分集

s.symmetric_difference(t) 等价 s ^ t

返回一个新的 set 包含 s 和 t 中不重复的元素

>>> a = set([1,2,3])
>>> b = set([2,3,4])
>>> a.symmetric_difference(b)
set([1, 4])

5.关系判断

s.issubset(t) 等价 s <= t

测试是否 s 中的每一个元素都在 t 中

s.issuperset(t) 等价 s >= t

测试是否 t 中的每一个元素都在 s 中

6.浅拷贝

>>> a
set([1, 2, 3])
>>> b = a.copy()
>>> b
set([1, 2, 3])

其他

1.用的较少的函数

s.intersection_update(t) 等价 s &= t

返回只保留含有 set “t”中元素的 set “s”

s.difference_update(t) 等价 s -= t

返回删除了 set “t”中含有的元素后的 set “s”

s.symmetric_difference_update(t) 等价 s ^= t

返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”

补充

集合推导(2013-08-13)

>>> { x for x in range(10) }
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

http://wklken.me/posts/2013/03/10/python-base-set.html#_5

python基础-集合小结的更多相关文章

  1. Python基础知识点小结

    1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号('''   ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/*   */注释.接着在Python中 ...

  2. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  3. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  4. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

  5. python基础 ------ 集合

    ---恢复内容开始--- -----   集合 使用场景:网购的订单.与商品ID 一一对应的商品信息 python的内置类型:List  Tuple  Dictionary ----  列表   LI ...

  6. Python学习【day04】- Python基础(集合、函数)

    集合 #!/usr/bin/env python # -*- coding:utf8 -*- # set集合 只可放不可变的数据类型,本身是可变数据类型,无序 # s = {1,2,3,[1,2,3] ...

  7. python基础---集合类型(Sets)

    集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个无序 ...

  8. python基础学习小结

    Python是一门面向对象的解释性语言(脚本语言),这一类语言的特点就是不用编译,程序在运行的过程中,由对应的解释器向CPU进行翻译,个人理解就是一边编译一边执行.而JAVA这一类语言是需要预先编译的 ...

  9. 1.Python基础知识小结:

    Python3下载地址:https://www.python.org/downloads/windows/ python3 windows安装参考地址: https://jingyan.baidu.c ...

随机推荐

  1. 「C基础」C运算符的优先级

    一.运算符的优先级表 C 语言的符号众多,由这些符号又组合成了各种各样的运算符.既然是运算符就一定有其特定的优先级,下表就是C 语言运算符的优先级表: 注:同一优先级的运算符,运算次序由结合方向所决定 ...

  2. python_49_三种编程方式及面向过程与面向函数区别.py

    ''' 三种编程方式:1.面向对象 (类:class)2.面向过程 (过程:def)3.函数式编程(函数:def) 编程语言中函数的定义:函数是逻辑结构化和过程化的一种编程方法 过程与函数的区别,过程 ...

  3. 安装Ubuntu桌面环境后只能Guest登录的解决办法

    1.安装Ubuntu桌面环境后,登录界面只显示了Guest 2.在登录界面按住crtl+shift+F1,进入tty模式 3.输入sudo -s进入root模式 4.输入vi /etc/lightdm ...

  4. 操作文件 -------JavaScrip

    本文摘要:http://www.liaoxuefeng.com/ 在HTML表单中,可以上传文件的唯一控件就是<input type="file">. 注意:当一个表单 ...

  5. XML格式与实体类的转换

    背景 本人头一回写博客,请大家多多关照.通过读取XML文件获取用户管理权限,其中涉及三部分: 1.XML文件的生成: 2.XML文件的读取: 3.XML文件的保存: 如何做 第一步:自己先将XML文件 ...

  6. vue watch深度监听对象,实现数据联动

    当对象内的某一个元素发生变化,判断对象另一元素,并进行赋值 <template> <input type="text" v-model="a.a1.a1 ...

  7. 数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次

    [1] 严格意义上数据结构的概念 数据结构,一个简单的定义:相互之间存在一种或多种特定关系的数据元素的集合.即:数据结构 = 元素集合 + 元素间关系的集合 . 在讨论数据结构时,可以基于两个不同的层 ...

  8. SpingBoot之配置文件的值注入问题

    我们在这里研究的是以yml配置文件值注入的问题: Person: lastName: 张三 age: 23 boss: false birth: 2018-10-11 maps: {k1: v1,k2 ...

  9. 【CSS】简略说明css的权重之分

    /*权重 :id > class > 标签 (小环境) 权重:内联 > 内部 > 外部 (大环境) 小环境处于内部环境中 */ <style> #p1{ /* id ...

  10. python练手习题

    不断记录python常见习题,不断寻求更多更好的解决办法.持续更新中..... 练习: 1. list两两元素交换位置,如[1,2,3,4,5,6] 执行后为 -> [2,1,4,3,6,5] ...