pythonset是什么类型的游戏_Python集合(set)类型的操作

原文详见:http://blog.csdn.net/business122/article/details/7541486

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

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

下面来点简单的小例子说明把。

>>> x = set('spam')

>>> y = set(['h','a','m'])

>>> x, y

(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))

再来些小应用。

>>> x & y # 交集

set(['a', 'm'])

>>> x | y # 并集

set(['a', 'p', 's', 'h', 'm'])

>>> x - y # 差集

set(['p', 's'])

记得以前个网友提问怎么去除海量列表里重复元素,用hash来解决也行,只不过感觉在性能上不是很高,用set解决还是很不错的,示例如下:

>>> a = [11,22,33,44,11,22]

>>> b = set(a)

>>> b

set([33, 11, 44, 22])

>>> c = [i for i in b]

>>> c

[33, 11, 44, 22]

很酷把,几行就可以搞定。

1.8 集合

集合用于包含一组无序的对象。要创建集合,可使用set()函数并像下面这样提供一系列的项:

s = set([3,5,9,10])      #创建一个数值集合

t = set("Hello")         #创建一个唯一字符的集合

与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。例如,如果检查前面代码中t集合的值,结果会是:

>>> t

set(['H', 'e', 'l', 'o'])

注意只出现了一个'l'。

集合支持一系列标准操作,包括并集、交集、差集和对称差集,例如:

a = t | s          # t 和 s的并集

b = t & s          # t 和 s的交集

c = t – s          # 求差集(项在t中,但不在s中)

d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)

基本操作:

t.add('x')            # 添加一项

s.update([10,37,42])  # 在s中添加多项

使用remove()可以删除一项:

t.remove('H')

len(s)

set 的长度

x in s

测试 x 是否是 s 的成员

x not in s

测试 x 是否不是 s 的成员

s.issubset(t)

s <= t

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

s.issuperset(t)

s >= t

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

s.union(t)

s | t

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

s.intersection(t)

s & t

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

s.difference(t)

s - t

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

s.symmetric_difference(t)

s ^ t

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

s.copy()

返回 set “s”的一个浅复制

请注意:union(), intersection(), difference() 和 symmetric_difference() 的非运算符(non-operator,就是形如 s.union()这样的)版本将会接受任何 iterable 作为参数。相反,它们的运算符版本(operator based counterparts)要求参数必须是 sets。这样可以避免潜在的错误,如:为了更可读而使用 set('abc') & 'cbs' 来替代 set('abc').intersection('cbs')。从 2.3.1 版本中做的更改:以前所有参数都必须是 sets。

另外,Set 和 ImmutableSet 两者都支持 set 与 set 之间的比较。两个 sets 在也只有在这种情况下是相等的:每一个 set 中的元素都是另一个中的元素(二者互为subset)。一个 set 比另一个 set 小,只有在第一个 set 是第二个 set 的 subset 时(是一个 subset,但是并不相等)。一个 set 比另一个 set 打,只有在第一个 set 是第二个 set 的 superset 时(是一个 superset,但是并不相等)。

子 set 和相等比较并不产生完整的排序功能。例如:任意两个 sets 都不相等也不互为子 set,因此以下的运算都会返回 False:ab。因此,sets 不提供 __cmp__ 方法。

因为 sets 只定义了部分排序功能(subset 关系),list.sort() 方法的输出对于 sets 的列表没有定义。

运算符

运算结果

hash(s)

返回 s 的 hash 值

下面这个表列出了对于 Set 可用二对于 ImmutableSet 不可用的运算:

运算符(voperator)

等价于

运算结果

s.update(t)

s |= t

返回增加了 set “t”中元素后的 set “s”

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”

s.add(x)

向 set “s”中增加元素 x

s.remove(x)

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

s.discard(x)

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

s.pop()

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

s.clear()

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

请注意:非运算符版本的 update(), intersection_update(), difference_update()和symmetric_difference_update()将会接受任意 iterable 作为参数。从 2.3.1 版本做的更改:以前所有参数都必须是 sets。

还请注意:这个模块还包含一个 union_update() 方法,它是 update() 方法的一个别名。包含这个方法是为了向后兼容。程序员们应该多使用 update() 方法,因为这个方法也被内置的 set() 和 frozenset() 类型支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器选购seo优化规则,网站seo优化注意事项1—域名和服务器选择

原标题&#xff1a;网站seo优化注意事项1—域名和服务器选择一个网站的域名和服务器是很重要的&#xff0c;这关乎网站的优化前提&#xff0c;作为一个seo优化人员必须要对自己网站的域名和服务器有所了解。网站seo优化注意事项1&#xff1a;域名的关联性域名怎么选择呢&#x…

as cast float server sql_Sql Server中Float格式转换字符串varchar方法(转)

SELECT CONVERT(varchar(100), CAST(testFloat AS decimal(38,2)))SELECT STR(testFloat, 38, 2)从Excel中导入到sql2000&#xff0c;有一列“联系方式”变成了float类型&#xff0c;我想转换成nvarchar类型&#xff0c;用下面的语句select convert(nvarchar(30),convert(int,联…

openjpa_OpenJPA:内存泄漏案例研究

openjpa本文将提供完整的根本原因分析详细信息以及解决影响Oracle Weblogic Server 10.0生产环境的Java堆内存泄漏&#xff08;Apache OpenJPA泄漏&#xff09;的方法。 这篇文章还将演示在管理javax.persistence.EntityManagerFactory生命周期时遵循Java Persistence API最佳实…

美国凯斯西储大学计算机硕士专业怎么样,在凯斯西储大学读硕士大约需要多少花费?...

凯斯西储大学是美国著名大学之一&#xff0c;始建于1826年&#xff0c;坐落于俄亥俄州的克里夫兰&#xff0c;是一所以独立研究闻名的世界顶级私立大学&#xff0c;美国一级国家级大学。美国作为当今世界留学费用最高的国家之一&#xff0c;费用问题是所有赴美留学的学生都非常…

ffmpeg 缩放算法_图像尺寸调整算法介绍并手动实现近邻算法

课程更新完毕&#xff0c;后面会根据同学的意见维护此课程课程讲师&#xff1a;【夏曹俊】课程基于opencv**版3.2讲解&#xff0c;全部使用**的c接口&#xff0c;旧的接口会逐步被opencv抛弃&#xff0c;所以我们学习还是尽量学习新的接口&#xff0c;QT使用**的5.8版本&#x…

win7如何修改dns服务器地址,Win7系统DNS怎么设置?Win7系统DNS设置方法

Win7系统DNS怎么设置?众所周知&#xff0c;DNS地址是一个域名服务器地址&#xff0c;它可以把用户的网站地址解析成IP地址。如果这个服务器出现问题&#xff0c;可能就上不了网了。我们在使用Win7系统的时候&#xff0c;就是因为域名解析服务器不能将要访问的域名解析为正确的…

gradle web_简单的Gradle Web应用程序

gradle webGradle通过“ war”和“ jetty”插件轻松支持Java Web应用程序。 本教程将向您展示如何快速创建一个简单的Java Servlet Web应用程序。 我们的基本项目结构将是&#xff1a; basic-websrcmainjavacomcodetutrHelloWorldServlet.javawebappWEB-INFweb.xml首先&#x…

密钥文件登录服务器,密钥文件登录云服务器

密钥文件登录云服务器 内容精选换一换远程桌面协议(Remote Desktop Protocol&#xff0c;RDP)&#xff0c;是微软提供的多通道的远程登录协议。本节为您介绍如何使用RDP文件远程登录Windows弹性云服务器。从管理控制台下载的RDP文件对应唯一的云服务器&#xff0c;当前RDP文件命…

centos格式化优盘命令_u盘格式化工具fat32u盘安装centos6.5

3、声卡驱动不完全匹配&#xff0c;重装下声卡驱动(这种情况很少)朋友电脑开不了机&#xff0c;找我帮他看看&#xff0c;雨林木风win10家庭版&#xff0c;他电脑系统是有做过备份的现在做64位系统引起的■灵活设置背景2、电脑主板电池怎么换新的主板电池不贵的&#xff0c;才不…

maven 安装本地jar_使用Maven安装本地jar

maven 安装本地jar1.问题与选择 Maven是一种非常通用的工具&#xff0c;其可用的公共存储库首屈一指。 但是&#xff0c;总会有一个不在任何地方托管的工件&#xff0c;或者托管该工件的存储库有依赖的风险&#xff0c;因为当您需要它时&#xff0c;它可能不会启动。 发生这种情…

一个网站服务器有多少个ip,一个服务器可以有多少个ip地址

一个服务器可以有多少个ip地址 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。会话保持&#xff0c;指负载均衡器可以识别客户与服…

redis集群scan_Redis scan命令的一次坑

Redis作为当前服务架构不可或缺的Cache&#xff0c;其支持丰富多样的数据结构&#xff0c;Redis在使用中其实也有很多坑&#xff0c;本次博主遇到的坑或许说是Java程序员会遇到的多一点&#xff0c;下面就听博主详细道来。线上服务堵塞String key keyOf(appid);int retryCount…

jbpm小项目测试_尝试使用jBPM Console NG(测试版)

jbpm小项目测试大家好&#xff01; 这是有关jBPM Console NG的另一篇文章。 经过6个月的辛苦工作&#xff0c;我很高兴为开发人员社区撰写这篇文章&#xff0c;以进行尝试。 在这篇文章中&#xff0c;我将解释如何从源代码构建应用程序。 这背后的主要思想是知道如何在测试过程…

hashmap 扩容是元素还是数组_HashMap 中的容量与扩容实现

总有人心里有火炬&#xff0c;而且彼此能看见。高手过招&#xff0c;招招致命JDK1.8 中 HashMap 的底层实现&#xff0c;我相信大家都能说上来个 一二&#xff0c;底层数据结构 数组 链表(或红黑树) &#xff0c;源码如下/*** 数组*/transient Node[] table;/*** 链表结构*/st…

用友数据库服务器如何修改,用友u8数据库服务器怎么设置

用友u8数据库服务器怎么设置 内容精选换一换本章介绍如何在管理控制台购买GaussDB(for openGauss)实例&#xff0c;并通过内网使用弹性云服务器连接GaussDB(for openGauss)实例。GaussDB(for openGauss)提供gsql工具帮助您在命令行下连接数据库&#xff0c;您需要提前创建一台弹…

红米路由器ac2100怎样设置ipv6_Redmi路由器AC2100开箱:六天线简单直接,功能丰富对玩家友好...

原标题&#xff1a;Redmi路由器AC2100开箱&#xff1a;六天线简单直接&#xff0c;功能丰富对玩家友好Redmi K30系列旗舰新品发布会期间&#xff0c;Redmi红米发布了Redmi路由器AC2100。这一命名让人不禁想起小米路由器AC2100。但就像同期发布的Redmi小爱音箱Play与小米小爱音箱…

hibernate批量查询_使用Hibernate批量获取

hibernate批量查询如果需要从Java处理大型数据库结果集&#xff0c;则可以选择JDBC&#xff0c;以提供所需的低级控制。 另一方面&#xff0c;如果您已在应用程序中使用ORM&#xff0c;则回退到JDBC可能会带来一些额外的麻烦。 在导航域模型时&#xff0c;您将失去诸如乐观锁定…

word2003流程图变成图片_Word中流程图怎么画 手把手教你制作!

步骤三&#xff1a;绘制流程图框架接下来我们开始绘制流程图的框架。所谓框架就是画出图形、把图形大致布局并在其中输入文字。在这里大家可以体会到&#xff0c;如果已经作好了草图&#xff0c;这里的操作将是比较轻松的&#xff0c;如果在这里边想边画&#xff0c;可能会耽搁…

cmakelists语法_CMakeList语法知识

在写这篇文章之前开始是想一些shell脚本与Makefile的一些基础语法知识。但是又觉得太过基础。关于Liunx shell脚本可以看看教程http://c.biancheng.net/linux_tutorial/ CMake是一种跨平台编译工具&#xff0c;CMake主要是编写CMakeLists.txt文件&#xff0c;然后通过cmake命令…

spring pom设置_Spring社交Twitter设置

spring pom设置在本系列的第一部分中 &#xff0c;我们研究了如何使用StackExchange REST API来检索其主要问题。 第二部分将重点设置使用Spring Social Twitter项目与Twitter REST API交互所需的支持。 最终目标是能够在多个帐户上每天发送两个问题&#xff0c;每个帐户集中讨…