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
猜你喜欢
- 一、问题的发现与提出在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1:代码段
- 下表列出了所有Python语言支持的逻辑运算符。假设变量a持有10和变量b持有20,则: 示例:试试下面的例子就明白了所有的Pyt
- <pre name="code" class="python">creazy.txt文件
- 一:背景以及项目结构介绍第一次将自己做的python爬虫项目打包成exe,搜了很多网上教程,大部分都是打包一个py文件的小demo,这里先给
- 多线程爬虫:即程序中的某些程序段并行执行,合理地设置多线程,可以让爬虫效率更高糗事百科段子普通爬虫和多线程爬虫分析该网址链接得出:https
- 前言工作中偶尔会遇到文件去重的事情,收到一大堆文件,名称各不相同,分析文件的时候发现有不少重复的文件,导致工作效率低下,那么,这里就写了一个
- Python获取多线程返回结果在 Python 的多线程中,有时候我们会需要每一个线程中返回的结果。然而,在经过我的多番尝试、以及网上各种博
- JavaScript中的64位加密及解密的两个方法。function base64Encode(text){if (/(
- 春节休息了几天,今天上班第一天,最近混twitter混得比较多,经常要压缩URL,以前做了个书签用http://is.gd/压缩,后来发现了
- 用ASP代码实现对access数据库的在线压缩处理,注意压缩前请备份数据库。我们知道每个一段时间压缩一下access数据库,可以减少数据库的
- Q: I am working with Oracle database 8.1.7 and I have written a JAVA c
- 本文实例为大家分享了bootstrap显示隐藏的具体代码,供大家参考,具体内容如下<html><head><m
- 本文将以Mysql举例,介绍sqlalchemy的基本用法。其中,Python版本为2.7,sqlalchemy版本为1.1.6。一. 介绍
- python按指定行数把大文件进行拆分如图大文件有7000多万行,大小为16G需要拆分成多个200万行的小文件代码如下:# -*- codi
- 1 之前我们学习了列表,知道列表可以用来存储一组数据,可以增删改查,可以遍历2 之前我们学习了字典,知道字典可以用来存储键值对,与列表类似,
- 代码如下:use tempdb if object_id('tempdb..#table') is not null dro
- 什么是浮动?浮动是 css 的定位属性。我们可以看一下印刷设计来了解它的起源和作用。印刷布局中,文本可以按照需要围绕图片。一般把这种方式称为
- 更新:优化了代码,理由numpy的ufunc函数功能替换了之前的双重for循环,测试图片大小为692*1024*3,优化前运行时间为6.9s
- 环境: windows 7 + Python 3.5.2 + Selenium 3.4.2 + Chrome Driver 2.29 + C
- 引言阿刁是一个自动化测试用例,从一出生他就被赋予终生使命,去测试一个叫登录的过程是否合理。他一直就被关在一个小黑屋里面,从来也没有出去过,小