集合 set:可变集合与不可变集合

可变集合:可以向集合中添加删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素。

把不同的元素组成一起形成集合,集合不记录元素的位置或者插入点,也就是不能用index索引来获取元素。

集合元素:组成集合的成员不可以有重复,有重复的会被筛选过滤。

语法:set()函数

set('list')  参数需要时一个序列

例如:

>>> s = set('alex li')
>>> s
set(['a', ' ', 'e', 'i', 'l', 'x'])  在这里会发现两个l字符,输出时只出现了一次,其中一个重复的被set给筛选过滤掉了。

>> a=[1,2,3,4,5,6]
>>> b=set(a)      当集合被创建后,集合里面的内容就无法在进行修改
>>> b
set([1, 2, 3, 4, 5, 6])

集合对象是一组无序排列的可哈希的值:集合成员可以作为字典的键,列表,字典,元祖这些就是不可哈希的代表。

如何查看集合中的数据:

1、通过for循环的方式查看

2、通过迭代器的方式去查看

不可变集合:不可以向集合中添加删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素。

日常操作:

1、创建集合:由于集合没有自己的语法格式,只能通过集合的工厂方法set()和forzenset()来创建。

>>> set("[1,2,3,4,5]")
set([',', '1', '3', '2', '5', '4', '[', ']'])

2、访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能通过循环遍历或使用用in、not in 来访问或者判断集合元素。

>>> b
set([1, 2, 3, 4, 5, 6])
>>> 2 in b
True

>>> li = [2,3,'alex']
>>> li
[2, 3, 'alex']
>>> b=set(li)
>>> b
set([2, 3, 'alex'])
>>> 'alex' in b
True
>>> 'ale' in b    通过这里可以发现‘alex’在集合中是作为一个整体的,不是作为一个字符串可以进行分开匹配。
False

3、更新元素:

add()方法:添加一个元素,把参数当做一个元素,不管参数的内容是多少。

>>> b
set([2, 3, 'alex'])
>>> b.add('qiyuanchang')
>>> b
set([2, 3, 'alex', 'qiyuanchang'])

update()方法:会把参数当做一个序列,参数会被拆分成序列添加到集合中,有重复的会被做去重操作。

>>> b
set([2, 3, 'alex', 'qiyuanchang', 'uu', 'u'])
>>> b.update('ops')
>>> b
set([2, 3, 'alex', 'qiyuanchang', 'uu', 'o', 'p', 's', 'u'])    这里会发下参数ops被做了拆分

>>> b.update('wwwwww')
>>> b
set([2, 3, 'alex', 'qiyuanchang', 'uu', 'o', 'p', 's', 'u', 'w'])    这里重复的几个w都被过滤掉了,只保留了一个

>>> li
[2, 3, 'alex']
>>> b=set(li)
>>> b
set([2, 3, 'alex'])
>>> b.update(['12','qiyuanchang'])    当参数是列表的时候,会把列表中的几个元素拆分添加到集合中。
>>> b
set(['12', 2, 3, 'alex', 'qiyuanchang'])

remove()方法:可以删除集合中的指定元素

>>> b
set(['12', 2, 3, 'alex', 'qiyuanchang'])
>>> b.remove(2)
>>> b
set(['12', 3, 'alex', 'qiyuanchang'])

pop()方法:随机删除集合中的元素,测试得知,应该默认会删除第一个集合元素。

>>> b
set(['12', 3, 'alex', 'qiyuanchang'])
>>> b.pop()
'12'

clear()方法:清空集合

>>> b.clear()
>>> b
set([])

del 方法:删除集合

>>> del s
>>> s
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 's' is not defined

4、集合的类型操作符:

  in、not in:可以判断一个元素是否存在于集合中

  >>> s=set('qiyuanchang')
  >>> s1=set('yuan')
  >>> s
  set(['a', 'c', 'g', 'i', 'h', 'n', 'q', 'u', 'y'])
  >>> 'q' in s
  True

  集合等价于不等价(==、!=):判断两个集合是否相同

  子集、超集:判断一个集合的元素内容是否是另外一个集合的子集。

  >>> s=set('qiyuanchang')
  >>> s1=set('yuan')
  >>> s1 < s
  True

  联合:联合操作与集合的or操作其实是等价的,联合符号有个等价的方法,union()

  交集:

  差集:

python 集合 set的更多相关文章

  1. Python 集合set添加删除、交集、并集、集合操作符号

    在Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 1. ...

  2. [转]python集合set

    Python中集合set是基本数据类型的一种,它有可变集合(set)和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法. 来源网 ...

  3. python集合使用范例的代码

    在代码过程中中,将代码过程中比较好的代码段珍藏起来,如下的代码是关于python集合使用范例的代码,希望能对大伙有用. # sets are unordered collections of uniq ...

  4. python集合与字典的用法

    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合 •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...

  5. Python 集合内置函数大全(非常全!)

    Python集合内置函数操作大全 集合(s).方法名 等价符号 方法说明 s.issubset(t) s <= t 子集测试(允许不严格意义上的子集):s 中所有的元素都是 t 的成员   s ...

  6. Python 集合set()添加删除、交集、并集、集合操作详解

    集合:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次.每个元素的地位都是相同的,元素之间是无序的. 创建集合set python set类是在python的sets模块中,大家现在使 ...

  7. python集合可以进行相减

    python集合可以进行相减 student = {'tom','jim','mary','tom','jack','rose'} print(student) print('rose' in stu ...

  8. Python集合类型的操作与应用

    Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...

  9. Python - 集合 - 第十一天

    Python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建 ...

  10. python集合set,交集,并集,差集,对称差集,子集和超集

    python集合set,交集,并集,差集,对称差集,子集和超集 x = {1, 2, 3, 4} y = {2, 4, 5, 6} # 交集(取x中与y中相同部分) print(x.intersect ...

随机推荐

  1. VIM基础知识整理(附思维导图)

    这是当时初学VIM后做的一个思维导图,图片稍大,所以从freemind导出了html文本po在下面:图片在最下方,放大可清晰浏览. VIM 普通模式 普通编辑命令 功能:浏览,普通编辑 x:删除光标所 ...

  2. JS运动框架的封装过程(一)

    给大家出一道题,从起点A走到目的地B,一共用了1000毫秒,每一次是30毫秒,请问你在这里面得到了哪些信息? 信息有哪些呢? 第一个,总时长是:1000毫秒 第二个,多久时间走一次?30毫秒 第三个, ...

  3. Maven搭建Hadoop开发环境

    1.安装maven(用于管理仓库,jar包的管理) 1.解压maven安装包 2.把maven添加到环境变量/etc/profile 3.添加maven目录下的conf/setting.xml文件到- ...

  4. 如何用webpack实现自动化的前端构建工作流

    什么是自动化的前端构建流? 1. 自动补全css私有前缀,自动转化less\sass为css,自动转化es6\vue\jsx语法为js,自动打包小图片为base64以减少http请求,自动给js,cs ...

  5. Java学习之路----计算圆形的面积和周长

    题目:计算圆形的面积,其中圆形的半径是随意指定. 源代码以及所有的分析思路都如下: import java.util.Scanner; //引入Scanner类 public class TestAr ...

  6. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  7. 是否使用安全模式启动word

          打开word,出现了一个提示,显示着“word遇到问题需要关闭.我们对此引起的不便表示抱歉.”下面有选项“恢复我的工作并重启word”,选中它.点下面的“不发送”.      在出现的提示 ...

  8. [基础架构]PeopleSoft Process Scheduler 重要文件说明

    我们都知道PeopleSoft是由几个不同的服务组成的,他们在PeopleSoft体系结构中扮演着自己的角色.这些服务具有不同的文件结构并包含重要的可执行文件和配置文件. 以下是Peoplesoft体 ...

  9. redis源码笔记(一) —— 从redis的启动到command的分发

    本作品采用知识共享署名 4.0 国际许可协议进行许可.转载联系作者并保留声明头部与原文链接https://luzeshu.com/blog/redis1 本博客同步在http://www.cnblog ...

  10. 详解Android Activity---启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...