Python学习笔记(六)Python组合数据类型
在之前我们学会了数字类型,包括整数类型、浮点类型和复数类型,这些类型仅能表示一个数据,这种表示单一数据的类型称为基本数据类型。然而,实际计算中却存在大量同时处理多个数据的情况,这种需要将多个数据有效组织起来并统一表示,这种能够表示多个数据的类型称为组合数据类型。
一、组合数据类型概述
组合数据类型更能够将多个同类或不同类型组织起来,通过单一的表示使数据更有序、更容易。根据数据之间的关系,组合数据类型可以分为3类:序列类型、集合类型和映射类型。
序列类型是一个元素向量,元素之间的存在先后关系,通过序号访问,元素之间不排他。
集合类型是一个元素类型,元素之间无序,相同元素在集合中唯一存在。
映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key, value)。
1.序列类型
序列类型是一堆元素向量,元素之间存在先后关系,通过序号访问。
Python中有很多数据类型都是序列类型,其中比较重要的是str(字符串)、tuple(元组)list(列表)可以看成是单一字符的有序序列,属于序列类型。
序列类型有12个通用的操作符和函数
操 作 符 | 描 述 |
x in s | 如果x是是的元素,返回True,否者返回False |
x not in s | 如果x不是s的元素,返回True,否则返回False |
s + t | 连接S和t |
s * n 或 n * s | 将序列s复制n次 |
s[i] | 索引,返回序列的第i个元素 |
s[i:j] | 分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素) |
s[i:j:k] | 步骤分片,返回包含序列s第i到j个元素以k为步数的子序列 |
len(s) | 序列s的元素个数(长度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x(,i[,j])) | 序列s中从i开始到j位置中第一次出现的元素x的位置 |
s.count(x) | 序列中出现x的总次数 |
元组(tuple)是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。Python中元组采用逗号和圆括号(可选)来表示,如:
>>>creature = "cat", "dog", "tiger", "bear"
print(creature)
>>>('cat', 'dog', 'tiger', 'bear') >>>creature = "cat", "dog", "tiger", "bear"
all=(1,2,456,creature) #元组中包含元组creature
print(all)
print(all[2])
print(all[-1][2])
>>>(1, 2, 456, ('cat', 'dog', 'tiger', 'bear'))
>>>456
>>>tiger
其中,一个元组可以作为另一个元组的元素,可以采用多级索引获取信息,例如上面的元组all中包含了元组creature,可以用all[-1][2]获取对应元素值。
元组除了用于表达固定数据外,还常用于以下3种情况:函数多返回值、多变量同步赋值、循环遍历,例如:
>>>def func(x): #函数多返回值
return x,x*x; >>>a,b = 'dog','cat' #多变量同步赋值 >>>import math #循环遍历
for x,y in ((1,0),(2,5),(3,8)):
print(math.hypot(x,y)) #求多个坐标值到原点的距离
2.集合类型
集合类型与数学中集合的概念一致,即包含0个或多个数据项的无序组合。
集合中的元素不可重复,元素类型只能是固定数据类型,例如集合、浮点数、字符串、元组等,列表、字典、和集合类型本身都是可变数据类型,不能作为集合的元素出现。
由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加和删除。集合用大括号({})表示,可以用赋值语句生成一个集合,例如:
>>>S={100,200,(666,25),"YES",458}
print(S)
>>>{100, 200, 458, 'YES', (666, 25)}
从上面可以看出,由于集合的元素是无序的,集合的打印效果与定义顺序可以不一致。
集合类型有10个操作符
操 作 符 | 描 述 |
S-T 或 S.difference(T) | 返回一个新集合,包括在集合S中但不在集合T中的元素 |
S-=T 或 S.difference_update(T) | 更新集合S,包括在集合S中但不在集合T中的元素 |
S & T 或 S.intersection(T) | 返回一个新集合,包括同时在集合S和T中的元素 |
S&=T 或 S.intersection_update(T) | 更新集合S,包括同时在集合S和T中的元素 |
s=^T 或 S.symmetric-difference(T) | 返回一个新集合,包括集合S和T中的元素,但不包括同时在其中的元素 |
s=^T 或 S.symmetric-difference_update(T) | 更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素 |
S|T 或 S.union(T) | 返回一个新集合,包括集合S和T中的所有元素 |
S=|T 或 S.update(T) | 更新集合S,包括集合S和T中的所有元素 |
S<=T 或 S.update(T) | 如果S和T相同或S是T的子集,返回True,否则返回False,可以用S>T判断S是否是T的真子集 |
S>=T 或 S.issuperset(T) | 如果S和T相同或S是T的超集,返回True,否则返回False,可以用S>T判断S是否是T的真超集 |
集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。
3.映射类型
映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。
键(key)表示一个属性,也可以理解为一个类别或项目,值(value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。
在Python中,映射类型主要以字典(dict)体现。
二、列表类型和操作
列表是包含0个或多个对象引用的有序序列,没有长度限制,可自由增删元素,使用灵活。
1.列表类型的概念
列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除或替换
2.列表类型的操作
函数或方法 | 描述 |
ls[i] = x | 替换类表 ls 第 i 数据项为 x |
ls[i:j] =l t | 用列表 lt 替换列表 ls 中第 i 到第 j 项数据(不含第 j 项) |
ls[i:j:k] = lt | 用列表 lt 替换列表 ls 中第 i 到第j项以k为步数的数据(不含第j项) |
del ls[i:j] | 删除列表 ls 第i到第 j 项数据,等价于ls[i:j]=[] |
del ls[i:j:k] | 删除列表 ls 第 i 到第 j 项以 k 为步数的数据 |
ls += lt 或 ls.extend(lt) | 将列表 lt 元素增加到列表 ls 中 |
ls *= n | 更新列表 ls,其元素重复 n 次 |
ls.append(x) | 在列表 s 最后增加一个元素 x |
ls.clear() | 删除 ls 中的所有元素 |
ls.copy() | 生成一个新列表,复制 ls 中的所有元素 |
ls.insert(i,x) | 在列表 ls 的第 i 位置增加元素 x |
ls.pop(i) | 将列表 ls 中的第 i 项元素取出并删除该元素 |
ls.remove(x) | 将列表中出现的第一个元素 x 删除 |
ls.reserve(x) | 列表 ls 中的元素反转 |
三、字典类型和操作
列表是存储和检索数据的有序序列。当访问列表中的元素时,可以通过整数的索引来查找它,这个索引时元素在列表中的符号,列表的索引模式是“<整数序号>查找<被索引内容>”
1.字典类型的概念
通过任意键信息查找一组数据中值信息的过程叫做映射,Python语言中通过字典实现映射。Python语言中的字典可以通过大括号({})建立,建立模式如下:
{<键1>:<值1>, <键2>:<值2>, ... ,<键n>:<值n>}
其中,键和值通过冒号连接,不同键值对通过逗号隔开。
例如:
>>>Dic={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
print(Dic)
print(Dic["中国"])
>>>{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
>>>中国
一般来说,字典中键值对的访问模式如下,采用中括号格式:
<值> = <字典变量> [<键>]
2.字典类型的操作
与列表类似Python字典也有非常灵活的操作方法。使用大括号可以创建字典,并指定初始值,通过中括号可以增加新的元素,例如:
>>>Dic={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
Dic{"英国"}="伦敦"
print(Dic)
>>>{"中国":"北京","美国":"华盛顿","法国":"巴黎","英国":"伦敦"}
注意:直接使用大括号({})生成一个空的字典。生成空集合需要使用函数set()。
字典类型的函数和方法:
函数和方法 | 描 述 |
<d>.keys() | 返回所有的键信息 |
<d>.values() | 返回所有的值信息 |
<d>.items() | 返回所有的键值对 |
<d>.get(<key>,<default>) | 键存在则返回相应值,否则返回默认值 |
<d>.pop(<key>,<default>) | 键存在则返回返回值,同时删除键值对,否则返回默认值 |
<d>.popitem() | 随机从字典中取出一个键值对,以元组(key,value)形式返回 |
<d>.clear() | 删除所有的键值对 |
del<d>[<key>] | 删除字典中某一个键值对 |
<key>in<d> | 如果键在字典中返回True,否则返回False |
与其他组合类型一样,字典可以通过for-in语句对其元素进行遍历,例如:
>>>Dic={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
for i in Dic:
print(i)
>>>中国
美国
法国
所以,字典有以下一些基本原则:
(1)字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息。
(2)字典中元素以键信息为索引访问。
(3)字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。
Python学习笔记(六)Python组合数据类型的更多相关文章
- Python学习笔记(六)Python的列表生成式、生成器
列表生成式 List Comprehensions 列表生成式是Python内置的非常简单却强大的可以用来创建list的生成式. 简单的数值范围的list可以使用一下方式生成: >>> ...
- Python学习笔记六
Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...
- Python学习笔记(三)数据类型
在内存中存储的数据可以有多种类型,在Python中,能够直接处理的数据类型有以下几种: 数字(Numbers) 字符串(String) 列表(List) 元组(Tuple) 字典(Dictionary ...
- Python学习笔记(二)——数据类型
1.数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 2.Python数字类型 Pyth ...
- python学习笔记(二)— 数据类型
一.变量.数据类型 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- python学习笔记(一):python简介和入门
最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...
- python 学习笔记 9 -- Python强大的自省简析
1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...
- python 学习笔记一——Python安装和IDLE使用
好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...
- python学习笔记(python简史)
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...
- Python学习笔记 - day12 - Python操作NoSQL
NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...
随机推荐
- 关于underline
1, 有些系统可能看不到下划线的效果,这是不妨按着Alt键看看: 2, underline=#, 数字表示在哪个字母下显示下划线,从0开始
- thinkphp 子查询
从3.0版本开始新增了子查询支持,有两种使用方式: 大理石平台检验标准 1.使用select方法 当select方法的参数为false的时候,表示不进行查询只是返回构建SQL,例如: // 首先构造子 ...
- React中的表单应用
React中的表单应用 用户在表单填入的内容,属于用户跟组件的互动,所以不能用this.props读取. var Input = React.createClass({ //初始化组件数据 getIn ...
- C# FTP上传下载(支持断点续传)
<pre class="csharp" name="code"><pre class="csharp" name=&quo ...
- FreeMarker 自定义 TemplateDirectiveModel(一)
FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker 与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不 ...
- SpringBoot学习笔记(四):SpringBoot集成Mybatis-Plus+代码生成
简介 官网:http://baomidou.oschina.io/mybatis-plus-doc/ 平时业务代码不复杂的时候我们写什么代码写的最多,就是我们的SQL语句啊,配置那么多的Mapper. ...
- <每日一题>题目20:简单python练习题(11-20)
#11.编写程序,输入一个自然数,输出它的二进制.八进制.十六进制表示形式 Num = input("请输入任性自然数:") Num = eval(Num) print(" ...
- 2014-VGG-《Very deep convolutional networks for large-scale image recognition》翻译
2014-VGG-<Very deep convolutional networks for large-scale image recognition>翻译 原文:http://xues ...
- 关于set的unordered特性
关于set排序无序的问题,原因是set使用哈希表做内存索引. 详细介绍可见: https://stackoverflow.com/questions/12165200/order-of-unorder ...
- HZOI2019建造游乐园(play)组合数学,欧拉图
题目:https://www.cnblogs.com/Juve/articles/11186805.html(密码是我的一个oj用户名) solution: 反正我是想不出来... 题目大意就是要求出 ...