Python学习笔记——集合类型

时间:2022-04-24 16:13:37

集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset)

可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素

不可变集合是有哈希值的,能被用做字典的键或者是作为集合中的一个成员

1.创建集合类型和给集合赋值

>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])
>>> t = frozenset('bookshop')
>>> t
frozenset(['b', 'h', 'k', 'o', 'p', 's'])
>>> type(s)
<type 'set'>
>>> type(t)
<type 'frozenset'>
>>> len(s)
6
>>> len(t)
6
>>> s == t
False

2.访问集合中的值

>>> 'k' in s
False
>>> 'k' in t
True
>>> for i in s:
... print i
...
c
e
h
o
p
s

3.更新集合

>>> s.add('z')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.update('abc')
>>> s
set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.remove('z')
>>> s
set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's'])
>>> s -= set('abc')
>>> s
set(['e', 'h', 'o', 'p', 's'])

  不可变集合不能修改

4.删除集合中的成员和集合

>>> del t

5.集合类型操作符

  <1>标准类型操作符

    1.成员关系(in,not in)

    2.集合等价/不等价(==,!=)

    3.子集/超集(<,<=,>,>=)

  <2>集合类型操作符

    1.联合(|)

>>> s|t
set(['b', 'e', 'h', 'k', 'o', 'p', 's'])

    2.交集(&)

>>> s&t
set(['h', 's', 'o', 'p'])

    3.差补/相对补集(-)

>>> s-t
set(['e'])

     4.对称差分(^),即(XOR)异或,只能是属于集合s或者集合t的成员,不能同时属于两个集合

>>> s^t
set(['b', 'e', 'k'])

     5.混合集合类型操作

      类型不相同的时候,产生的结果类型和左操作数的类型相同

  <3>集合类型操作符(仅适用于可变集合)

    1.update()方法或者|=

>>> s|=t
>>> s
set(['b', 'e', 'h', 'k', 'o', 'p', 's'])

     2.intersection_update()方法或者&=,保留两个集合重复的成员

>>> s
set(['a', 'c', 'b', 'd'])
>>> t
set(['e', 'd', 'f'])
>>> s&=t
>>> s
set(['d'])

    3.difference_update()方法或者-=

    4.symmetric_difference_update()方法或者^=,差分操作

6.内建函数

  <1>标准类型函数——len()

   <2>集合类型工厂函数——set()和frozenset()

7.集合类型内建方法——P184

Python学习笔记——集合类型的更多相关文章

  1. Scala学习笔记--集合类型Queue&comma;Set

    补充知识:http://www.importnew.com/4543.html 正文开始 scala.collection.immutable scala.collection.mutable 队列Q ...

  2. Mooc中国大学Python学习笔记--数字类型及操作

    整数类型 只需知道整数无限制,pow(),4进制表示形式 与数学中整数的概念一致 --可正可负,没有取值范限制 --pow(x,y)函数:计算x^y,想算多大算多大 -十进制:10 -二进制,以0b或 ...

  3. &lbrack;Python学习笔记&rsqb; 数字类型及操作

    数字类型 整数类型 十进制:1110,-123 二进制:以0B或0b开头 0b110,-0B101 八进制:以0O或0o开头 0o123,-0O567 十六进制:以0X或0x开头 0x555,-0X8 ...

  4. Python学习笔记-数字类型

    如何定义一个数字类型 定义var1为一个INT类型,所以在5/3 输出的是 1. var1 = 5 var1=var1/3 print var1 定义var1为一个INT类型,因为var1是INT类型 ...

  5. Python学习笔记——集合

    1. 定义 num = {} print(type(num)) num2 = {1,2,3,4,5} print(type(num2)) <class 'dict'> <class ...

  6. &lbrack;Python学习笔记&rsqb; 字符串类型及操作

    字符串处理 索引:返回字符串中单个字符 <字符串>[M] 切片:返回字符串中一段字符子串 <字符串>[M:N:K] 字符串格式化使用.format()方法

  7. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  8. 【python学习笔记】5&period;条件、循环和其他语句

    [python学习笔记]5.条件.循环和其他语句 print: 用来打印表达式,不管是字符串还是其他类型,都输出以字符串输出:可以通过逗号分隔输出多个表达式 import: 导入模块     impo ...

  9. Deep learning with Python 学习笔记(9)

    神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练,有点类似于扔一架纸飞机,一开始给它一点推 ...

随机推荐

  1. 放假回来啦!!小技能:一个div不给width,怎么让它居中捏?&grave;&lpar;&ast;∩&lowbar;∩&ast;&rpar;′

    答案是:这个div没有浮动的话,就用text-align: center; 有的话...我也不知道了

  2. (一)半小时开发一个APP

    [前言] HPP是什么? HybirdApp的简称,详细介绍参见:HPP--让所有中小企业拥有自己的APP 说白了就是用html+css+js开发app,包括ios和android版本. HBuild ...

  3. Emacs 之列编辑模式

    // */ // ]]> Emacs 之 列编辑模式 Table of Contents 1. Emacs 下列编辑模式常用命令 2. 可以参考 1 Emacs 下列编辑模式常用命令 先mark ...

  4. 解决BLOB&sol;TEXT column can&&num;39&semi;t have a default value query问题

    Create table的时候,报错BLOB/TEXT column 'xxxxxx( 表名称)' can't have a default value query ,意思是TEXT类型的表字段不能够 ...

  5. 【转】Ubuntu下搭建SVN环境-Apache

    原文网址:http://www.cnblogs.com/candle806/archive/2012/12/20/2826280.html 环境描述:ubuntu server 12.04  / sv ...

  6. 完整的拆分nginx访问日志

    <pre name="code" class="html"> 10.168.255.134 [09/Oct/2016:15:28:52 +0800] ...

  7. 深入浅出Node&period;js &lpar;6&rpar; - 理解Buffer

    6.1 Buffer结构 6.1.1 模块结构 6.1.2 Buffer对象 6.1.3 Buffer内存分配 6.2 Buffer的转换 6.2.1 字符串转Buffer 6.2.2 Buffer转 ...

  8. QListWidget 去掉选中项

    1.先去掉选中项的虚线框: 设置为无焦点:把FocusPolicy设置成:NoFocus 2.设置QListWidgetItem标志 调用setFlags函数,去掉Qt::ItemIsSelectab ...

  9. Dapper的扩展这个你知道嘛?

    之前写的ORM对比文章中,我选Dapper作为底层ADO的基础访问框架后,我对此再次进行进一步的深入研究,发现里面还有延伸了一些好用的扩展方法和特性,那我便简单的跟大家说一下特性标签. 一.Table ...

  10. P5002 专心OI - 找祖先

    P5002 专心OI - 找祖先 给定一棵有根树(\(n \leq 10000\)),\(M \leq 50000\) 次询问, 求以 \(x\) 为 \(LCA\) 的点对个数 错误日志: 看下面 ...