【Learning Python】【第三章】表、元组、字典和集合
表
表提供了类似数组的数据结构,它是可变的,可以增删改查
增:
insert(下标,值),如果下标 > 表的长度,则插入到末尾;若 < 表头的下标,则插入到第一个
append / += 目标元素/表被附加在末尾
删:
del(归还目标内存),删除时,可以通过[start:end:step]来指定删除那些元素
remove(要删除的值) 这个操作只删除第一个符合的值
a = [1, 1, 1]
a.remove(1)
print(a)
输出 [1, 1]
pop(需要弹出的数据下标),这个有趣的地方是可以写下标,一般来说,pop作为栈操作,是不需要下标的,直接弹出栈顶元素,但是py可以指定下标,达到指定下标删除的目的
改:
通过下标重新赋值直接修改
sort排序,排序要求或者都是数字,或者都是字符串,不能表内又有数字又有字符串
a = ["0", 1]
a.sort()
输出:
TypeError: unorderable types: str() < int()
查:
通过下标直接查询
[start:end:step]方法查询
in语句查询
a = [1, 2, 3]
2 in a
输出 true
index查找值所在的第一个下标
count数值出现了多少次
引用赋值和拷贝赋值:
直接将表赋值给另一个变量,则该变量称为了表的一个引用
a = [1, 2, 3]
b = a
b.pop()
print(a)
输出:
[1, 2]
copy,list()构造函数,[::]取子表等操作获得一份拷贝
a = [1]
b = a.copy()
b.pop()
print(a)
输出
[1]
unpack:
如果你要把表的一些元素赋值给一些变量,则可以这么简写
a = [1. 2. 3]
b, c, d = a
这样b = 1, c = 2, d = 3
注意:当unpck时,目标变量数量必须和表的元素数量一致,如果你只需要取一部分的数据值,则通过[::]获取子表,否则会报错
a = [1, 2, 3, 4, 5]
b, c, d = a[0:3]
元组
元组就是不能被修改的表,用()或者一组用,分割的数据来表示,当然还有构造函数tuple
a = (1, 2, 3)
b = 1, 2, 3
元组只能获取数值或子元组,无法新增数据,无法修改数据,无法删除数据
字典
字典类似于HASH表,存储key/value对,key可以是字符串,也可以是数字
a = {1:1, "1":2, 0.1:1}
在生成字典的时候,可用任何二元元素对来进行
a = dict(((1, 2), (2, 3)))
对里面的第一个元素成为key,第二个元素成为value
增:
向字典内增加一个元素时,直接通过key赋值就行了,如果key存在,则覆盖,不然新增
删:
del删除制定key
clear删除所有key
改:
通过key来实现
查:
访问key来获取数据
合并:
dict.update(dict)来合并两个字典,若有key相同,则后者覆盖前者,若后者的key不存在,则新建
注意:如果访问一个存在的key,则会报错,如果不想报错,则用.get方法,这是返回一个空对象
和表类似的,如果赋值,则获得字典的引用,如果不想改变原字典,则通过copy来实现
当获取所有key(.keys)、所有value(.values)和所有key/value对(.items)的时候,可通过表的构造函数转成表,不然很难操作
集合
集合就是只有key的字典,因为key在字典中是唯一的
a = set({1, 2, 3})
b = {1, 2, 3}
集合一旦被确定下来,就可以被认为是常量了,无法向集合内新增/删除/更改元素,而获取集合内元素的方法也只能通过for循环迭代,不能通过下标和key来获取
a = {1, 2, 3}
print(a[1]) #通过key来获取
print(a[0]) #通过下标来获取
以上代码均会产生错误
集合操作:
交集:
集合求交使用操作符 & / 类方法 - intersection
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b)
以上代码会输出: {2, 3}
并集:
并集使用操作符 | / 类方法 union
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)
以上代码会输出: {1, 2, 3, 4, 5}
差集:
计算差集使用运算符 - / 类方法 difference
a = {1, 2, 3}
b = {2, 3}
print(a - b)
以上代码会输出: {1}
对称差:
一个集合的对称差 = (a | b) - (a & b),含义是在两个集合中出现,但不被两个集合都共有的元素
计算对称差使用运算符 ^ / 类方法 symmetric_difference
a = {1, 2, 3}
b = {2, 3, 4}
print(a ^ b)
以上代码输出:{1, 4}
子集/真子集:
计算一个集合是否是另一个集合的子集或真子集,使用运算符 < / <=
a = {1, 2, 3}
b = {0, 1, 2, 3}
a <= b #子集
a < b #真子集
以上两个判断都是true
超集/真超集:
计算一个集合是否是另一个集合的超集或真超集,使用运算符 > / >=
a = {1, 2, 3}
b = {0, 1, 2, 3}
b >= a #超集
b > a #真超集
以上两个判断都是true
【Learning Python】【第三章】表、元组、字典和集合的更多相关文章
- 使用python实现哈希表、字典、集合
哈希表 哈希表(Hash Table, 又称为散列表),是一种线性表的存储结构.哈希表由一个直接寻址表和一个哈希函数组成.哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标. 简单哈希函数: ...
- python基础之02列表/元组/字典/set集合
python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...
- 简学Python第三章__函数式编程、递归、内置函数
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- Python第三章-字符串
第三章 字符串 3.1 基本字符串操作 Python的字符串和元组差不多,是不可以进行改变的,如果想改变值,可以尝试list序列化之后在进行修改. { website = 'http://ww ...
- 翻译《Writing Idiomatic Python》(四):字典、集合、元组
原书参考:http://www.jeffknupp.com/blog/2012/10/04/writing-idiomatic-python/ 上一篇:翻译<Writing Idiomatic ...
- python自动化day2-列表、字典、集合
一.数据类型 1.什么是数据? x=10,10是我们要存储的数据 2.为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型, ...
- day 07 元组,字典和集合等数据类型介绍
元组:就是一个不可变的列表 1.用途,当我们需要记录多个值,并且没有更改的需求的时候,应该使用元组 2定义方式:使用,在 ( ) 中分隔开多个任意类型的值 注:t=("egg",) ...
- python数据结构-如何在列表、字典、集合中根据条件筛选数据
如何在列表.字典.集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, &qu ...
- Python 基础-python-列表-元组-字典-集合
列表格式:name = []name = [name1, name2, name3, name4, name5] #针对列表的操作 name.index("name1")#查询指定 ...
- 流畅的python第三章字典和集合学习记录
什么是可散列的数据类型 如果一个对象是可散列的,那么在这个对象的生命周期中,他的散列值是不变的,而且这个对象需要实现__hash__()方法.另外可散列对象还要有__qe__()方法.这样才能跟其他键 ...
随机推荐
- HDMI之CEC DDC学习笔记(可能有误)
1 HDMI的音视频通路,有待学习: 2 DDC通路,大致是个IIC接口,读取上游器件的EDID或者E-EDID数据: EDID的前128字节数据格式如下:(可能有不同版本,格式可能有区别)
- C++ 标准库string字符串的截取
标准库的string有一个substr函数用来截取子字符串.一般使用时传入两个参数,第一个是开始的坐标(第一个字符是0),第二个是截取的长度. #include <iostream> #i ...
- uva 10817(状压dp)
题意:就是有个学校要招老师.要让没门课至少有两个老师可以上.每个样样例先输入三个数字课程数量s,已经在任的老师数量,和应聘的老师数量.已经在任的一定要聘请. 思路是参考了刘汝佳书上的,关键如何状压. ...
- java 字符串判断是否相等
在其它编程语言中,判断字符串通常用"=="进行判断,但是在java中由于String类型是一个对象,不能使用"=="进行判断 需要使用equals()方法.
- C# 扩展类
C# 中提供一个非常实用的供能,扩展方法(Extension method) 扩展方法是通过额外的静态方法扩展现有的类型.通过扩展方法,可以对已有类型做自己想做的相关扩展.方法:定义静态类,扩展方法也 ...
- 《企业应用架构模式》(POEAA)读书笔记
原文地址:<企业应用架构模式>(POEAA)读书笔记作者:邹齐龙(技术-5013 什么是架构 Rolph Johnson认为:架构是一种主观上的东西,是专家级的项目开发人员对系统设计的一些 ...
- 基于KEIL4开发ARM9(S3C2440)的裸机程序
本文主要介绍如何使用Keil4开发ARM9(S3C2440)裸机程序. 说明: 一.平台: 操作系统:Windows XP系统 KEIL版本:4.73 开发板:ARM9(S3C2440) 二.建立工程 ...
- 项目导入myeclipse10后jsp报错问题
电脑重装系统装了个myeclipse10,当项目导入时发现jsp报错,原本以为是jdk版本问题,在网上找了资料才知道原来是myeclipse10相对之前版本对js的检查更加严格了.可以用以下方法解决: ...
- sae评测报告-2013最新版
Author:MoonXue 上线时间:2009年9月,国内最早. 支持语言:PHP.JAVA.PYTHON 版本管理:SVN 可选数据库:MySQ.KVDB(非关系型) 特色服务:Web服务器配置工 ...
- 使用 MySQL 查找附近的位置
使用 MySQL 查找附近的位置 以下 SQL 语句将会在与坐标 37, -122 相距 25 英里的半径范围内查找最近的 20 个位置.该语句根据行的纬度/经度以及目标纬度/经度计算距离,然后只请求 ...