Python 学习笔记(十)Python集合(一)

回顾

int/float/str/list/tuple/dict

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

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

列表是可变的,是序列

元组是不可变的,是序列

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

集合的基本概念

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

创建集合的方法

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

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

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

集合是不可哈希的

 1 >>> {1,"python"} #使用花括号创建集合
 2 set([‘python‘, 1])
 3 >>> type({1,"python"})
 4 <type ‘set‘>
 5 >>> set("python")
 6 set([‘h‘, ‘o‘, ‘n‘, ‘p‘, ‘t‘, ‘y‘])
 7 >>> s= set("python") #使用set()创建集合
 8 >>> s
 9 set([‘h‘, ‘o‘, ‘n‘, ‘p‘, ‘t‘, ‘y‘])
10 >>> s2=set(["baidu","google","ali"])
11 >>> type(s2)
12 <type ‘set‘>
13 >>> s2
14 set([‘baidu‘, ‘google‘, ‘ali‘]) #集合的元素没有顺序
15 >>> s3=set([2,2,2,2,2])
16 >>> s3  #集合元素不可重复
17 set([2])
18 >>>

可哈希与不可哈希

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

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

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

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

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

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

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

集合与列表之间的转换

 set() list()

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

创建不可变集合

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

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

原文地址:https://www.cnblogs.com/wangruihua-521/p/8556057.html

时间: 2024-10-10 11:30:39

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

python学习笔记十——异常处理

1.try: command except 错误类型,记录错误信息变量: command finally: command try...finally的用处是无论是否发生异常都要确保资源释放代码的执行.一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程.如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理.如下从几个细节讨论finally的特性. 1).try中的return: 当在try语句块中含有return语句

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

python 学习笔记 7 -- Python关键字总结

0.写在前面的话 学习一门语言最重要的功课是练习与复习,在<笨方法学Python>中第三十七节虽然没有教你任何内容,但是它提醒我们:"学了这么多,你还能记得多少?该复习了!" 下面我们就对这一节的第一部分"关键字"来做个复习: Python中的关键字包括如下: and       del        from      not      while    as        elif       global    or       with     

python学习笔记(十四): unittest

Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载TestCase到TestSuite中的 TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信

python学习笔记(十五) - python连接mysql数据库

一. 安装mysql驱动: 由于mysql服务器以独立的进程运行,并通过网络对外服务,所以,需要支持python的mysql驱动来连接mysql服务器. 安装驱动:easy_install mysql-connector-python 二. 连接数据库: 下面演示使用python代码连接mysql: #!/usr/bin/env python # -*- coding: utf-8 -*- # utility @ Python # 导入MySQL驱动: import mysql.connecto

python学习笔记(十四) - easy_install安装与使用

一. 背景知识 在使用python的时候,经常会使用到本身没有安装的第三方模块,这时我们就需要使用easy_install 二. 使用方法 1. 下载easy_setup.py的源代码:http://pypi.python.org/pypi/setuptools 2. 用记事本存放源码并命令为easy_setup.py 3. 双击运行或在命令行运行:python easy_setup.py 4. 在python的安装目录python\scripts目录中可以看到有好几个easy_install的

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

最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型的计算机语言,它的特点是语法简洁.优雅.简单易学.在1989诞生,Guido(龟叔)开发.这里的python并不是蟒蛇的意思,而是龟叔非常喜欢一部叫做<Monty Python飞行马戏团>的电视剧,所以以python命名(老外就是这么任性).二.解释型语言和编译型语言编译型语言就是先把写好的程序翻

python学习笔记(python发展介绍)

一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交易,金融分析等,作为动态语言的python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛 ·图形GUI python是一门什么样的语言? 编程语言主要从以下几个角度进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 编译型和解释型 编译型,如:c,c++,

python学习笔记 - 函数,集合,包,模块

一.函数 a=1, b=2, 交换值 定义中间量c,C=None, a,b=b,a a,b,c=1,2,3 sys.argv 实现指定的某些功能,使用的时候可以直接调用,简化代码,提高代码复用性 def fun():#定义一个函数,后面是函数名                print("Hello World")#函数体 例如: 1.def sayHello(): print("Hello World") sayHello()  --调用 2.def sayNam

python学习笔记3:集合,文件操作,函数

一.集合 1. >>> s=set([1,2,3,4,5,6,6,6,])>>> s{1, 2, 3, 4, 5, 6} 集合可以理解为有键没有值的字典,键之间去重,无序. 2.集合操作: >>> s1={1,2,3,4,5,6,7}>>> s2={6,7,8,9,10,11}>>> s1&s2{6, 7}//交集>>> s1|s2{1, 2, 3, 4, 5, 6, 7, 8, 9, 10