回顾

int/float/str/list/tuple/dict

整数型和浮点型是不可变的,不是序列

字符串是不可变的,是序列

列表是可变的,是序列

元组是不可变的,是序列

字典是可变得,但不是序列

集合的基本概念

集合是基本的数学概念,它是集合论的研究对象,指具有某种特定性质的事物的总体,(在最原始的集合论─朴素集合论─中的定义,集合就是“一堆东西”。)集合里的事物(“东西”),叫作元素。若然 x 是集合 A 的元素,记作 x ∈ A。

创建集合的方法

方法1:使用花括号{} ;用花括号所包裹的对象,就是一个集合

方法2:set()函数 一般使用这个函数创建集合

集合的元素没有顺序,不可重复

集合是不可哈希的

 >>> {1,"python"} #使用花括号创建集合
set(['python', 1])
>>> type({1,"python"})
<type 'set'>
>>> set("python")
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> s= set("python") #使用set()创建集合
>>> s
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> s2=set(["baidu","google","ali"])
>>> type(s2)
<type 'set'>
>>> s2
set(['baidu', 'google', 'ali']) #集合的元素没有顺序
>>> s3=set([2,2,2,2,2])
>>> s3 #集合元素不可重复
set([2])
>>>

可哈希与不可哈希

就是在其生存期内,不可变的对象,是可哈希的,反之,可变的就是不可哈希的

Python中所有不可变的都是可哈希的,如数字、字符串、元组

另列表、字典都是可变的,都是不可哈希的

在字典中的Key键必须是可哈希的,即不可变的对象

在集合中,集合的元素必须是可哈希的,也就是说集合的元素必须是不可变对象

所以说用列表作为集合的元素,就报错,因为列表是不可哈希的对象

 >>> lst =[[1,2,3],"python"]   #用列表作为参数,创建一个集合,报错list 是不可hash的
>>> s =set(lst)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> d={[1,2,3]:"python"} #创建一个字典,key为列表,报错list 是不可hash的
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list' #list 是不可哈希的
>>>

集合与列表之间的转换

 set() list()

 >>> lst=[1,2,3]
>>> s =set(lst) #将列表转换成集合
>>> s
set([1, 2, 3])
>>> lst2 =list(s) #将集合转换为列表
>>> lst2
[1, 2, 3]
>>> a =[1,2,2,3,3,6,6,8,9,0,0] #去除列表中的重复项,可使用set()集合
>>> s =set(a)
>>> s
set([0, 1, 2, 3, 6, 8, 9])
>>> a =list(s) #去除重复后,再转换为列表list
>>> a
[0, 1, 2, 3, 6, 8, 9]
>>> s
set([0, 1, 2, 3, 6, 8, 9])
>>> hash(s) #返回hash值,也可判断是否可哈希,报错不可哈希,否则返回hash值
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
>>> hash(1)
1

创建不可变集合

frozenset() 创建不可变集合,是可哈希的

 >>> a
[0,1,2,3,6,8,9]
>>> s2 =frozenset(a)
>>> type(s2)
<type 'frozenset'>
>>> hash(s2)
2096340863
>>>

Python 学习笔记(十)Python集合(一)的更多相关文章

  1. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  2. python学习笔记(十四): unittest

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestC ...

  3. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  4. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  5. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  6. python 学习笔记一——Python安装和IDLE使用

    好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...

  7. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

  8. python学习笔记(1)--python特点

    python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...

  9. python学习笔记之——python模块

    1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  10. python学习笔记(十)、文件操作

    在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...

随机推荐

  1. python文件操作各种模式和常用方法总结r r+ rb r+b

    1.读,r r+ rb r+b read() 全部读取 read(n) 读取一部分 r模式下:n 个字符. rb模式下:n个 字节. readline() 按行读取. readlines() 返回个列 ...

  2. 【转】js判断一个object对象是否为空

    判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in... 遍历属性,为真则为“非空数组”:否则为“空数组” for (var i in obj) { // 如果不为空 ...

  3. 三种角度解释href/src/link/import区别

    网上查到的几种不同但比较容易理解的解释 解释一: href是Hypertext Reference的缩写,表示超文本引用.用来建立当前元素和文档之间的链接.常用的有:link.a.例如: <li ...

  4. ImportError: No module named bs4错误解决方法

    前言:毕业论文打算用Python做爬虫爬一些数据,最近开始入门Python: 在学习的时候遇到一个问题,按照看的文章安装了Python,也配置了相应的环境(使用window系统),使用pycharm编 ...

  5. webpack基本使用教程

    安装 本地安装 npm install --save-dev webpack npm install --save-dev webpack-cli //4.x以上版本,用于cli命令 全局安装 npm ...

  6. ntp时钟服务器

    NTP服务器时钟校准的基本流程: (1):NTP客户端向NTP服务器发出一个时间请求包(UDP包),其中包含了该包离开客户端时的时间戳. (2):当服务器接收到该包时.填入包到达时的时间戳.包离开时的 ...

  7. html5之hash

    http://blog.csdn.net/u012028371/article/details/67636395 原文:https://www.studyscript.com/Post/index/i ...

  8. 在 Linux 中使用 Azure Premium 存储的基本优化指南

    Note 以下测试和结果都是基于 CentOS 6.5.对于其他版本,请参考本文档,并自行进行相关测试. 建议使用最新的内核版本 一般情况下,新的内核版本能解决老版本中存在的问题,添加对新出现硬件的支 ...

  9. LeetCode-Container With Most Water-zz

    先上代码. #include <iostream> #include <vector> #include <algorithm> using namespace s ...

  10. 大数据学习---大数据的学习【all】

    大数据介绍 什么是大数据以及有什么特点 大数据:是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合. 大数据是一种方法论:“一切都被记录,一切都被数字化,从数据中寻找需求,寻找知 ...