Python可变集合和不可变集合的构造方法大全
作者:zx 发布时间:2021-10-23 12:39:04
目录
一、对比数据类型
二、可变集合构造方法
三、不可变集合的构造方法
四、集合构造注意事项
Python集合又是一种新的数据类型,集合有两种形式:可变集合(set())和不可变集合(frozenset())两种,这两种集合操作方法比较类似,但是在底层性质上有截然想法的区别。集合是一种无序的,不重复且不可随机访问的元素集合,在概念和运算上和数学中的集合类似,集合分为可变和不可变两种。
一、对比数据类型
下面是我们学习过的一些数据类型,下面的注释是对比这些数据类型的结果,供学习集合前的参考。
str1 = 'pythonpython' # 不可变,有序:可以通过下标访问
list1 = [1, 2, 3, 2] # 可变,有序:可以通过下标访问
tup1 = (1, 2, 3, 2) # 不可变,有序:可以通过下标访问
dict1 = {'name': 'Tom', 'age': 18, 'love': 'python'} # 可变,无序:但可以通过键访问
二、可变集合构造方法
1.直接构造
set2 = {'name', 19, 'python'}
print(set2, type(set2))
返回结果:
{19, 'python', 'name'} <class 'set'>
2.使用函数构造
str1 = 'pythonpython'
list1 = [1, 2, 3, 2]
tup1 = (1, 2, 3, 2)
dict1 = {'name': 'Tom', 'age': 18, 'love': 'python'}
set3 = set(str1)
print(set3, type(set3))
set4 = set(list1)
print(set4, type(set4))
set5 = set(tup1)
print(set5, type(set5))
set6 = set(dict1)
print(set6, type(set6))
返回结果:
{'t', 'n', 'p', 'o', 'h', 'y'} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>
{'love', 'name', 'age'} <class 'set'>
3.使用推导式构造集合
set7 = set(i for i in range(1, 5))
print(set7, type(set7))
set8 = {i for i in list1}
print(set8, type(set8))
set8 = {i for i in tup1}
print(set8, type(set8))
返回结果:
{1, 2, 3, 4} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>
三、不可变集合的构造方法
不可变集合构造(与可变集合类似,把set改为frozenset即可)。
1.使用frozenset()函数构造
set3 = frozenset(str1)
print(set3, type(set3))
set4 = frozenset(list1)
print(set4, type(set4))
set5 = frozenset(tup1)
print(set5, type(set5))
set6 = frozenset(dict1)
print(set6, type(set6))
frozenset({'p', 'n', 't', 'h', 'y', 'o'}) <class 'frozenset'>
frozenset({1, 2, 3}) <class 'frozenset'>
frozenset({1, 2, 3}) <class 'frozenset'>
frozenset({'name', 'age', 'love'}) <class 'frozenset'>
2.推导式构造
set7 = frozenset(i for i in range(1, 5))
print(set7, type(set7))
返回结果:
frozenset({1, 2, 3, 4}) <class 'frozenset'>
四、集合构造注意事项
1.集合不能想其他数据集一样使用特有的符号来构造,集合使用的语法符号是{},和字典是一样的,这时候直接使用{}来构造的,系统无法判断数据类型是字典还是集合,会默认为集合。
set9 = {}
print(type(set9)) # 默认为字典:<class 'dict'>
正确的方法只有使用构造函数来实现了。
set9 = set()
set99 = frozenset()
2.集合中不能包含字典和列表这样的可变类型元素
set10 = {'name', 19, [1, 2, 3, 2]}
列表不可哈希:TypeError: unhashable type: 'list'
来源:http://www.wakey.com.cn/document-set-structure.html


猜你喜欢
- --1. 创建表,添加测试数据 CREATE TABLE tb(id int, [value] varchar(10)) INSERT tb
- RSA算法RSA算法是一种公钥加密技术,被认为是最安全的加密方式.它是由Rivest,Shamir和Adleman于1978年发明的,因此命
- /* --注意:准备数据(可略过,非常耗时) CREATE TABLE CHECK1_T1 ( ID INT, C1 CHAR(8000)
- 命令行方式运行Python脚本在这个章节中,我们将写一些简单的数据库管理脚本。在此之前让我们来复习一下如何通过命令行方式执行Py
- matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_
- PHP中重定向网页跳转页面的方法(共三种)第一种:利用header()函数进行重定向,这也是我用的较多的。(注意!locationhe和“:
- 如下所示:import ospath="/home/test/" #待读取的文件夹path_list=os.listdi
- 1 模型定义和TF很像,Pytorch也通过继承父类来搭建模型,同样也是实现两个方法。在TF中是__init__()和
- 本篇文章主要涉及mysql5.7.14用以往的安装方法安装存在的密码登录不上,密码失效等问题的解决办法,希望可以帮到有同样困扰的朋友。具体过
- 创建py文件总是为txt格式问题记录写代码过程中创建.py文件时,一直正常,但创建名称为train.py文件时总是为txt格式,即使选择了p
- FCKeditor是目前互联网上最好的在线编辑器,功能强大,支持IE 5.5+ (Windows), Fire
- 在整个安装的过程中也遇到了很多的坑,故此做个记录,争取下次不再犯!我的整个基本配置如下:电脑环境如下:win10(64位)+CPU:E5-2
- Go素数筛选分析1. 素数筛选介绍学习Go语言的过程中,遇到素数筛选的问题。这是一个经典的并发编程问题,是某大佬的代码,短短几行代码就实现了
- 下面的代码是从kesion系统扒下的,确实不错,支持utf8格式。代码如下:'===========================
- 本文实例讲述了php设计模式之装饰模式。分享给大家供大家参考,具体如下:介绍装饰者模式(Decorator Pattern)允许你向一个现有
- #pd.to_datetime函数#读取数据import pandas as pddata = pd.read_csv('polic
- 1.从官网下载mysql-5.7.21-windowx64.zip mysql下载页面2.解压到合适的位置(E:\mysql) 这名字是我改
- 1. Python中lib、package和module的关系module:以.py为结尾的文件都是模块。package:就是一个带__in
- 工欲善其事必先利其器,Pycharm 是最受欢迎的Python开发工具,它提供的功能非常强大,是构建大型项目的理想工具之一,如果能挖掘出里面
- 使用PDB的方式有两种:1. 单步执行代码,通过命令 python -m pdb xxx.py 启动脚本,进入单步执行模式 pdb