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

集合是可哈希的无序、可变类型,不能作为字典的键,但可以作为值使用。

一 创建集合

方法1:
set1 = {'a','b','c'}
print(type(set1)) # ---> <class 'set'> 方法2:
list1 = ['a','b','c','d']
str1 = 'python'
dict1 = {'name':'sunwk','age':1000,}
tup1 = ('Google', 'Runoob', 1997, 2000) print('list1:',set(list1)) # --> list1: {'c', 'd', 'a', 'b'}
print('str1:',set(str1)) # --> str1: {'o', 'y', 'h', 't', 'n', 'p'}
print('dict1:',set(dict1)) # --> dict1: {'age', 'name'}
print('tup1',set(tup1)) # --> tup1 {2000, 'Google', 1997, 'Runoob'} 实例1:
list1 = [[1,2],3,4]
print('list1:',set(list1)) # --> TypeError: unhashable type: 'list' '''
小结:
1、集合的创建使用set来创建或者直接使用{}括起来,和字典有些路类似,只不过结合没有键值对
2、可以把列表、字符串、字典、元组变成集合类型,总结起来就是可以把可迭代的数据类型变成结合。
3、int型是不可迭代类型,所以set(int)是不可以的。
4、set(dict)时,把字典中的键作为元素创建成结合
5、集合中每个元素必须都是不可变类型
''' 

特殊应用

list1 = ['a','b','c','a']
str1 = 'array' print('list1:',set(list1)) # --> list1: {'a', 'b', 'c'}
print('str1:',set(str1)) # --> str1: {'a', 'r', 'y'} '''
集合可以去除字符串、列表、字典、元组中重复的元素。
'''

二 集合增加元素

set.add()

d = {1,2,'lvcm','zhangjm'}
d.add("sunwk") print('d -->',d)
# d --> {'zhangjm', 'lvcm', 2, 'sunwk', 1}

set.update()

f = {1,2,'lvcm'}

f.update('abc')
print(f)
# {1, 2, 'a', 'lvcm', 'c', 'b'} f.update([12,'suwk'])
print(f)
# {'lvcm', 1, 2, 'suwk', 12}

小结:

  • 使用add增加数据,会把添加的数据看成一个元素添加到原有集合中
  • 使用update增加数据,会把添加的数据拆分成N个元素添加到原有集合中

三 集合删除元素

set.remove()

  • 指定删除某个元素
  • 无返回值
g = {'lvcm', 1, 2, 'suwk', 12}

g.remove(2)
print(g)
#{1, 12, 'suwk', 'lvcm'}

set.pop()

  • 删除元素是随机的,无法指定删除元素
  • 有返回值
g = {'lvcm', 1, 2, 'suwk', 12}

a = g.pop()
print(a)
print(g)

set.clear

  • 清空集合
  • 无返回值
g = {'lvcm', 1, 2, 'suwk', 12}

g.clear()
print(g)
# set()

del

  • 删除集合
  • 无返回值
g = {'lvcm', 1, 2, 'suwk', 12}

del g
print(g)
# NameError: name 'g' is not defined

四 集合操作符

# 等价操作  (==)
print(set('alex')==set('alleexx')) # --> True # 子集 set.issubset()(a<b)
print(set('alex')<set('alexw')) # --> True
print(set('alex')<set('alex')) # --> Flase # 父集、超集 set.issuperset() (a>b)
e = {1,2,3,4,5,6,7,8}
f = {4,5,6,7,8}
print(e.issuperset(f)) # --> True # 交集 set.intersection() (a & b)
a = {1,2,3,4,5}
b = {4,5,6,7,8}
print(a.intersection(b)) # --> {4, 5} # 并集 set.union (c | d)
c = {1,2,3,4,5}
d = {4,5,6,7,8}
print(c.union(d)) # --> {1, 2, 3, 4, 5, 6, 7, 8} # 差集 set.difference() (e-f f-e)
e = {1,2,3,4,5}
f = {4,5,6,7,8}
print(e.difference(f))#(e-f) # --> {1, 2, 3} in e but not in f
print(f.difference(e)) #(f-e) # --> {8, 6, 7} in f but not in e #对称差集 set.symmetric_difference()(e^f)
e = {1,2,3,4,5}
f = {4,5,6,7,8}
print(e.symmetric_difference(f)) # --> {1, 2, 3, 6, 7, 8} 

Python3 数据类型-集合的更多相关文章

  1. Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict)

    Python入门篇-封装与解构和高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装和结构 #!/usr/bin/env pytho ...

  2. Oracle存储过程-自定义数据类型,集合,遍历取值

    摘要 Oracle存储过程,自定义数据类型,集合,遍历取值 目录[-] 0.前言 1.Packages 2.Packages bodies 3.输出结果 0.前言 在Oracle的存储过程中,可能会遇 ...

  3. 第二十节,基本数据类型,集合set、综合应用新数据更新老数据

    基本数据类型,集合set.综合应用新数据更新老数据 创建两个字典新数据,更新原始数据,a为原始数据,b为新数据 1,分别获取到a字典和b字典的key(键),将两个字典的键分别转换成两个集合 2,找出a ...

  4. [Python3] 013 集合:你不能两次进入同一个集合

    目录 0. 集合的独白 1. 集合的创建 2. 集合的特性 (1) 概述 (2) 少废话,上例子 3. 集合的遍历 4. 集合内涵 5. 集合的内置方法 6. 可供集合使用的一些方法/函数 (1) 又 ...

  5. python基础数据类型--集合(set)

    python基础数据类型--集合(set) 集合是一个数学概念由一个或多个确定的元素所构成的整体叫做集合 集合中的三个特征 1.确定性(元素必须死可hash) 2.互异性(去重) 3.无序性(集合中的 ...

  6. 整理了最全的Python3数据类型转换方法,可以收藏当手册用

    本文基于python3.8版本,总结了各种数据类型直接的转换规则和方法.算是比较全了,可以收藏当手册来查. 概述 数据类型转换,指的是通过某种方法,将一个数据由原来的类型转换为另外一个类型.比如,我们 ...

  7. python3数据类型

    python基本数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) ...

  8. python3 数据类型

    Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) Number(数字) Py ...

  9. Python3数据类型及转换

    I. 数据类型 Python3将程序中的任何内容统称为对象(Object),基本的数据类型有数字和字符串等,也可以使用自定义的类(Classes)创建新的类型. Python3中有六个标准的数据类型: ...

随机推荐

  1. ubuntu18.04错误配置变量环境导致无法进入系统

    1.问题描述 错误配置环境变量(直接在/etc/profile文件末尾添加了export xxx),关机后一直在登录界面循环无法进入系统. ###环境变量的添加是在原有变量之后以冒号(:)分隔加入,并 ...

  2. 红帽RHEL6.8离线环境下升级到RHEL7.3

    Red Hat Enterprise Linux 7 (RHEL 7) 是第一个支持从前一个 RHEL 主发行版本(RHEL 6)进行原位(in-place)升级的 RHEL 主版本.原位升级(in- ...

  3. angularjs中 $watch 和$on 2种监听的区别?

    1.$watch简单使用 $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEq ...

  4. 一台ECS服务器,部署多(两)应用,且应用配置不同域名

    场景 产品环境服务器有两台,前后端各分配一台服务器.现在在不增加机器的情况下,需要增加部署一套服务给台北地区服务. 现有的前端部署方案. 产品环境部署方案详解 实现 配置NAT步骤 ECS配置多网卡, ...

  5. Qt上FFTW組件的编译与安裝

    Qt上FFTW組件的編譯安裝 FFTW是一個做頻譜非常實用的組件,本文講述在Windows和Linux兩個平臺使用FFTW組件.Windows下的的FFTW組件已經編譯好成爲dll文件,按照開發應用的 ...

  6. python学习之文件读写入门(文件读的几种方式比较)

    1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...

  7. Leecode刷题之旅-C语言/python-203移除链表元素

    /* * @lc app=leetcode.cn id=203 lang=c * * [203] 移除链表元素 * * https://leetcode-cn.com/problems/remove- ...

  8. BIOS简单讲解

    学习链接: http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/courseware/1d95cdf6f0e9434488 ...

  9. LeetCode初级算法的Python实现--动态规划

    动态规划的本质是递归:所以做题之前一定要会递归:递归式就是状态转移方程:这里将会介绍使用动态规划做题的思维方式. 统一的做题步骤: 1.用递归的方式写出代码:(此方法写的代码在leetcode中一定会 ...

  10. [python3.x]win 7 下Pyinstaller库的安装与使用---探索之路

    一.下载安装包 cmd进入命令行,执行命令:pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz ...