小牛叔讲Python第8章:集合大家一起的快乐
上一篇:小牛叔讲Python第7章:循环与条件的爱恨情仇
下一篇:小牛叔讲Python第9章:小牛叔讲Python第9章:函数是你走过的套路
1、前言
凛东将至,琼恩·雪诺当上司令官命令山姆威尔去南方,到旧镇学习成为一个学士再回黑城堡。山姆发现如要熟练在图书馆中查询藏书,必须熟悉“列表”、“集合”、“元组”和“字典”4种数据组织形式。
2、列表list
图书馆所有书架上的藏书都是“列表”形式,为了帮助理解列表山姆记得小时候最开心的事情就是逛街。因为老妈会给买最喜欢吃的糖葫芦。竹签可以把许多山楂串成串。列表处理数据与吃糖葫芦其实很相似,:
上面两种形式都是“列表”,特点如下:
- 元素有序。列表中的元素都是有顺序的,可以通过下标来定位。
- 可以编辑。列表变量中的元素可以被删除、添加。
2.1 列表的定义
[元素0,元素1,...]
如上所示,列表中的元素是从0开始的。
如下代码使用中括号和逗号分隔来定义列表中的内容,如下定义了各种列表形式,比如:包括1,2,3,4,5五个整数的列表....
a=[1,2,3,4,5] #定义5个元素的列表
b=[] #定义了空的列表
c=['夜王前传',1045,'龙晶使用方法',1056] #定义了书名页数
d=[['夜王前传','龙晶使用方法'],[1045,1056]] #定了2个列表元素(书名列表、页数列表)的列表
定义完成可以通过如下的方式“取出数据”:
a[0] #表示第0个元素1
a[1] #表示第1个元素2
c[1] #表第第1个元素1045
此外,还可以使用负数来倒着取元素,今天山姆的女友吉莉来看他了,提义两个人玩扑克牌,我们定义一幅扑克可以这样定义:
2.2 切片操作
列表在计算机中有如下的主流操作: 切片、删除、弹出、添加。
切片就像在书柜(列表)中抽出中间一部分书本(元素),切片操作是这样的,使用冒号分隔前后位置(重要:后面的位置是不被包括的),继续之前定义我们看示例:
a=[1,2,3,4,5] #定义5个元素的列表
#形成新的列表[2,3]
a[-4:-2]
#形成新的列表[2,3]
a[1:3]
切片可以省略前后的数字,表示开始和结束,切片有好处就是不会产生“溢出错误”,如下的代码在计算时只返回空列表,而不会出错:
#表示从第100位置开始到结束的切片,返回空
a[100:]
#下面语句会产生溢出错误
a[100]
2.3 添加删除操作
使用append动作来添加元素至队尾、使用del语句删除元素、remove动作删除列表中某一个值(只能一个),如下所示:
列表.append(元素) #添加元素进列表尾
列表.remove(值) #删除列表中的值一次
del 元素 #在内存中删除元素
a=[1,2,3,4,5] #定义5个元素的列表
del a[0]
print('删除a第0个:',a)
a.append(5)
print('添加5,a:',a)
a.remove(5) #只能删除一次5
print('删除数值5,a:',a)
运行的结果如下:
删除a第0个: [2, 3, 4, 5]
添加5,a: [2, 3, 4, 5, 5]
删除数值5,a: [2, 3, 4, 5]
大家可能发现,除了del语句比较特殊,其它append和remove动作在运行时都需要把列表变量放在小数点前,现在大家可以理解为这是列表的专门的动作,这种写法表示:调用列表class类的方法函数,大家要记往。
del 语句是内置命令,不光应用于列表它表示在内存中删除销毁对象,任何变量都可以被“销毁”
2.4 插入弹出操作
弹出pop操作也是列表的专门的“方法”,表示从列表中的某个位置删除对象,但是会同时返回这个对象,就好像子弹从弹匣中弹出来一样。同样插入insert操作也可以基于位置(前文remove是基于数值而不是位置)把新元素插入列表。
列表.pop(位置)#不写就默认最后一个
列表.insert(位置,元素) #把元素插入位置当中
a=[2,3,4,5,5]
b = a.pop(3)
print('弹出第3个元素,a:',a,',弹出了:',b)
#第0个位置前插入字符“首”
a.insert(0,'首')
print('插入a:',a)
上面的代码运行结果如下图:
弹出第3个元素,a: [2, 3, 4] ,弹出了: 5
插入a: ['首', 2, 3, 4]
3、元组tuple
元组可看成是“只读”的列表,它使用成对的圆括号()来定义,其中的元素都有0开始的位置,但只能读取而不能添加和删除其中的元素。这就类似于Sam在学院中看到的珍贵特定古籍书柜,柜中的书籍都是固定位置的,只能取阅而不能更新新的书籍进来,也不允许把书籍抽走放在别处或是销毁。
在Sam学院中把书籍位置使用(柜号,行号,列号)的元组来表示,我们看示例:
#Sam学院中把书籍位置使用(柜号,行号,列号)来表示 :
book_a_loc = (1,23,34)
book_b_loc = (5,10,90)
print('a书位置:',book_a_loc)
print('a书行列:',book_a_loc[1:])
print('b书行号:',book_b_loc[1])
#试删除第1个元素会出错
del book_a_loc[0]
运行后的结果如下:
a书位置: (1, 23, 34)
a书行列: (23, 34)
b书行号: 10
Traceback (most recent call last): File "/....../demo2.py", line 7, in <module> del book_a_loc[0] TypeError: 'tuple' object doesn't support item deletion
错误信息提示我们,tuple元组类型不支持元素删除。
嘿嘿:Sam问道如果把列表加入元组呢,到底可编辑还是不可编辑?
结论是这样的,元组虽然不能编辑,但是其中作为元素的列表却是可以编辑的。
具体交给读者去试试吧!
4、集合set
在学院中有一些正在借阅当中的书籍,通常被学士位乱堆在桌子上,也没有顺序,这种在python中没有顺序的元素集叫“集合”,我们定义空集合时使用set(),而不用{}因为空花括号表示空的字典,我们定义集合时使用{元素1,....,}来表示。它有如下的特点:
- 无序
- 不重复
s = {'男','男','女'}
print(s)
在上面的定义当中,我们有重复的男,但是打印出来只有2个值:
{'女', '男'}
集合类型在数学上有交并差补运算,同样在python当中也有运算符分别是&|-^,具体示例如下图:
n1 = {'张','王'}
n2 = {'何','王'}
print('合',n1&n2,'并',n1|n2,'差',n1-n2,'补',n1^n2)
运行结果如下:
合 {'王'} 并 {'何', '张', '王'} 差 {'张'} 补 {'何', '张'}
5、字典dict
就像Sam经常使用的字典类书籍,Sam想查词dragonglass(龙晶石)就从dragonglass索引去找内容。python有一种数据结构dict可以实现上述根据索引来查询的功能,dict当中的元素由冒号分隔的两部分组成,前部分当索引的叫关键字key(个人觉得叫钥匙更形象),当内容的叫value(值)。
字典内的元素没有数字位置,只能通过关键字来获得内容。
#字典定义分隔符{},后可用回车
d = {'dragon':'一种古老的动物','龙晶':'使用龙的骨骼形成化石晶体',}
#查询 龙晶
print('龙晶',d['龙晶'])
#插入元素
d['丹尼莉丝'] = '坦格利安家族的风暴降生丹尼莉丝坦格利安一世、不焚者、弥林女王、安达尔人和先民的女王、七国统治者暨全境守护者、草原上的卡丽熙、打碎镣铐者以及龙之母!'
#删除dragon
d.pop('dragon')
#打印整个字典
print('d的内容',d)
运行后,结果如下:
龙晶 使用龙的骨骼形成化石晶体
d的内容 {'龙晶': '使用龙的骨骼形成化石晶体', '丹尼莉丝': '坦格利安家族的风暴降生丹尼莉丝坦格利安一世、不焚者、弥林女王、安达尔人和先民的女王、七国统治者暨全境守护者、草原上的卡丽熙、打碎镣铐者以及龙之母!'}
通过对字典的熟练运用,SAM找到了龙晶矿的所在地,他决定把这个消息告诉SNOW,帮助七国打赢夜王之战,关注后续发展哦。
上一篇:小牛叔讲Python第7章:循环与条件的爱恨情仇
下一篇:小牛叔讲Python第9章:小牛叔讲Python第9章:函数是你走过的套路
恭喜你又进步了一点,关注并跟随小牛叔,摆正编程入门姿式!
小牛叔讲Python第8章:集合大家一起的快乐相关推荐
- 小牛叔讲Python第10章:化繁为简的推导式
上一篇:小牛叔讲Python第9章:函数是你走过的套路 下一篇:小牛叔讲Python第11章:函数的高级用法以及匿名函数 目录 前言 1.推导式的形式 2.生成器 - () 3.推导式与交互使用 4. ...
- 小牛叔讲Python第12章:面向对象类与实例(Class入门)
上一篇:小牛叔讲Python第11章:函数的高级用法以及匿名函数 下一篇:小牛叔讲Python第13章:类Class中的各种变量类型 小牛叔用轻松有趣的故事,带你进入Python的编程世界. 1.类 ...
- 小牛叔讲Python第5章:while循环-符合条件就带你一直飞
上一篇:小牛叔讲Python第4章:条件语句-有时选择比努力更重要 下一篇:牛叔讲Python第6章:for循环-能计数的循环1234567 跟着小牛叔,找准Python入门姿势,每天只要阅读10分钟 ...
- python网页运行环境_Python小牛叔Web开发1:安装Visual Studio Code配置Python运行环境...
本系列是Python小牛叔Web开发系列,以Django为框架介绍如何使用Python来开发Web应用,本教程适合对于Web开发有基本知识的入门者. 1.安装Visual Studio Code编辑器 ...
- 【python第四章——序列(列表、元组、字典、集合、字符串、正则)】
python第四章--序列 第四章--序列 4.1列表 4.2元组 4.3字典 4.4集合 4.5字符串(重要) 4.6正则表达式 第四章--序列 概念:序列指一块可存放多个值的连续内存空间,这些值按 ...
- 进击的Python【第一章】:Python背景初探与Python基础(一)
Python背景初探 一.Python起源 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做 ...
- python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...
- 《HeadFirst Python》第一章学习笔记
对于Python初学者来说,舍得强烈推荐从<HeadFirst Python>开始读起,这本书当真做到了深入浅出,HeadFirst系列,本身亦是品质的保证.这本书舍得已在<Pyth ...
- 【JAVA SE】第十四章 集合框架、语法糖和泛型
第十四章 集合框架.语法糖和泛型 文章目录 第十四章 集合框架.语法糖和泛型 一.集合框架 1.概念 2.接口 二.语法糖 1.概念 2.解语法糖 三.泛型 1.概念 2.泛型类 3.泛型接口 4.泛 ...
最新文章
- windbg学习.formats--转换成各种进制
- OpenFOAM中slip和noslip介绍(滑移条件无滑移条件)【翻译】
- Circle and Points POJ - 1981(单位圆覆盖最多点)
- wait、waitpid
- 前端学习(2766):生命周期函数
- hadoop3.2.2--记录java.io.IOException: All specified directories have failed to load.问题
- 虚拟机上搭git服务器,搭建gitlab服务器
- 使用Executor管理Thread对象详解
- android自动化测试--appium运行的坑问题及解决方法
- 质疑北京大北农科技集团股份有限公司(”大北农“)停牌公告
- pc企业微信hook接口,企业微信营销软件,企业微信群发
- 个人博客系统PHP源码 DouPHP轻博客
- pmp效益管理计划和做题技巧
- Win7 配置 Git 客户端 图文详解
- BandZIP无广告版(v6.25)安装及禁止联网设置
- CSDN自动展开全文的插件
- 项目经理常用的几大项目管理工具盘点
- .net敏捷软件开发框架核心功能特点
- 有些小老板辛辛苦苦经营了一年的工厂,年底了再看看自己的兜里比脸都干净是什么原因?
- 【物联网专题】物联网IoT相关学习与输出
热门文章
- 【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码
- C语言 主动判别int型出界
- python 离线翻译软件_简单翻译软件
- 科研人必备论文小技巧——word分分钟自动修改插入的参考文献、附图和表格的插入技巧
- 微众银行七年,从拓荒者到深耕者
- 记一次对微信引流网站的简单渗透测试
- 解决layui的table数据重载reload where参数会保留上次条件的问题
- macOS上使用Openconnect代替Cisco Anyconnect
- 【LeetCode】825. Friends Of Appropriate Ages 解题报告(Python)
- 【企业动态】开启新征程,谱写新篇章 | 数商云喜迎乔迁