1.7集合

作者: Benedict清水 | 来源:发表于2020-06-09 09:07 被阅读0次

一、集合(set)

集合是一些唯一的、不可变的对象的一个无序集合体。集合既不是序列也不是映射类型。
创建集合: 字面量的方式

{1,2,3,4}

创建集合: 工厂函数的方式

set([1,2,3,4])

二、集合的方法

集合的add方法插入一个项目,update在原位置求并集,remove根据值删除一个元素。

>>> x = set('abcde')
>>> y = set('bdxyz')

>>> z = x.intersection(y) #求交集
>>> z
{'d', 'b'}
----------------------------------
>>> z.add('spam') #添加元素
>>> z
{'d', 'b', 'spam'}
----------------------------------
>>> z.update(set([1,2])) #求并集
>>> z
{1, 2, 'd', 'b', 'spam'}
----------------------------------
>>> z
{1, 2, 'd', 'b', 'spam'}
>>> z.remove('b') #移除元素
>>> z
{1, 2, 'd', 'spam'}

三、集合推导

集合推导会运行一个循环并在每次迭代时收集一个表达式的结果,通过一个循环变量来访问当前的迭代值以用于集合表达式中。

>>> {x**2 for x in [1,2,3,4]}
{16, 1, 4, 9}

四、不可变性的限制

集合只能包含不可变对象类型。因此,列表和字典不能嵌入到集合中,元组是可以嵌入集合。集合本身是可变的,因此不能直接嵌入到其他集合中。

>>> S={1,2}

>>> S.add([3,4])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
-------------------------------------
>>> S.add({'classname':'python'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
-------------------------------------
>>> S.add((3,))
>>> S
{1, 2, (3,)}

如果需要在另外一个集合中存储一个集合,可以像调用set一样调用内置函数frozenset,但frozenset会创建一个不可变集合,可以嵌套到其他集合中。

>>> a = {1,2,3}
>>> b = frozenset([4,5,6])
>>> a.add(b)
>>> a
{1, 2, 3, frozenset({4, 5, 6})}

相关文章

  • 1.7集合

    一、集合(set) 集合是一些唯一的、不可变的对象的一个无序集合体。集合既不是序列也不是映射类型。创建集合: 字面...

  • 1.7源码阅读-Java集合

    Java集合提供了存储数据和对象的类,其主要的关系如下图。 不难发现Collection和Map定义的方法十分相似...

  • Java集合之HashMap源码分析

    前面我们提到了集合,今天我们就具体来了解一下Java集合中具体的组成部分! 以下源码均为jdk1.7 HashMa...

  • Java集合 - HashMap - JDK1.8

    HashMap HashMap是以键值对进行存储的集合,其中键值是唯一的,HashMap是无序的。 改变 1.7版...

  • (转)Java集合,HashMap底层实现和原理(1.7数组+链

    来源:Java集合,HashMap底层实现和原理(1.7数组+链表与1.8+的数组+链表+红黑树) 概述 文章的内...

  • Java集合类源码目录

    Java集合类源码的熟悉是很重要的,所以记录下自己看了jdk1.7版本下的java.util包的集合类源码的一些笔...

  • Java集合之HashMap底层实现原理[2]

    Java集合之HashMap底层实现原理[1]前面分析了下jdk 1.7的hashMap底层结构,今天在来说下jd...

  • 清华大学培训安排一二

    7月31日安排如下: 1.7:00和家宾馆门口集合,朱老师(电话18810195572)带大家前往食堂就餐,7:4...

  • 面试题

    高级、资深工程师面试题 java 集合类用过哪些? hashmap 1.8比1.7有哪些变化?红黑树的查询时间复杂...

  • HashMap源码分析(JDK1.7)

    HashMap JDK1.7 概述 HashMap是一个以Key-Value键值对方式存储的集合,每一个键值对也叫...

网友评论

      本文标题:1.7集合

      本文链接:https://www.haomeiwen.com/subject/uxnjtktx.html