Python入门:数据结构的4种基本类型
数据结构:通俗点说,就是储存大量数据的容器。这里主要介绍Python的4种基本数据结构:列表、字典、元组、集合。
格式如下:
- 列表:list = [val1,val2,val3,val4],用中括号;
- 字典:dict = {key1:val1,key2:val2},大括号,且每个元素是带有冒号的key与val的对应关系组;
- 元组:tuple = (val1,val2,val3,val4),小括号;
- 集合:set = {val1,val2,val3,val4},大括号。
1. 列表:
list = [val1,val2,val3,val4]
列表最显著的特征是:
- 列表中每个元素都是可变的;
- 列表中的元素都是有序的,即每个元素都有一个位置;
- 列表可以容纳Python中的任何对象。
接下来看下列表的增删改查。
增:
list = [1,'dwd',3.6] list.insert(0,'Python') print(list)
用insert方法可以实现在列表中增加元素。insert方法需要写明增加在哪个位置和增加的内容,新增元素的实际位置是在指定位置元素之前的位置;如果指定的位置不存在,默认会增加在列表末尾。
list = [1,'dwd',3.6] list[0:0] = [9] # 【0:0】是指在list中的第1个位置插入新元素 list[3:3] = ['a'] # 【3:3】是指在list中的第4个位置插入新元素 print(list)
上面说到的这两种方法都是添加单个元素,除了添加单个元素外,还可以添加多个元素,用extend方法来实现。
list_a = [1,'dwd',3.6] list_b = ['Python',56,'game'] list_a.extend(list_b) # extend方法用于在列表末尾一次性追加另一个列表中的多个值 print(list_a)
删:
list = [1,'dwd',3.6] list.remove('dwd') print(list)
删除列表中的元素除了用上面的remove方法来实现外,也可以用del关键字来声明:
list = [1,'dwd',3.6] del list[0:2] # 【0:2】是删除第1和第2个位置的元素 print(list)
改:
list = [1,'dwd',3.6] list[2] = 7 list[0] = 'start' print(list)
如果想要替换掉列表中的某个元素,可以直接给列表某位置的元素重新赋值,list[2]指list列表中的第3个元素。
查:
列表的索引与之前文章《Python入门:字符串的分片与索引、字符串的方法》中提到的字符串的索引类似,同样是分正反两种索引方式,可以从前往后,也可以从后往前索引。比如:
list = [1,'dwd',3.6] print(list[1]) # 打印第2个位置的元素 print(list[-1]) # 打印倒数第一个位置的元素 print(list[:2]) # 打印第1和第2个元素 print(list[1:]) # 打印第2到最后一个的元素
但如果想查看某个元素的位置,就不适合用这种方式,程序会报错。因为列表只接受用位置进行索引,不可以通过元素来查找位置。
2. 字典:
dict = {key1:val1,key2:val2}
编程世界中的很多概念都源自于生活,字典也是。这种数据结构如我们使用的字典一样,通过“名称—内容”来构建,在Python中每个元素是带有冒号的key与val的对应关系组,习惯称之为键值对。
字典的特征如下:
- 字典中的元素必须是键值对的形式;
- 键(key)不可以重复,而值(val)可以重复;
- 键不可变,无法修改;值可修改,可以是任何对象。
即使字典中有重复的键,打印出来时也只会出现一次。比如:
dict = {'A':'art','B':'big','C':'cute','C':'cute'} print(dict)
接下来看下字典的增删改查。
增:
字典中没有像列表那样有一个现成的insert方法可以使用,但可以通过下面这种方式插入元素,元素默认会插入在最后一个位置。
dict = {'A':'art','B':'big','C':'cute'} dict['D'] = 'dictionary' print(dict)
上面讲到在列表中增加多个元素时可以使用extend方法来实现,在字典中也有对应的update方法来实现添加多个元素。
dict = {'A':'art','B':'big','C':'cute'} dict.update({'D':'dictionary','E':'exam'}) print(dict)
删:
在字典中删除某元素,也可以使用del关键字。
dict = {'A':'art','B':'big','C':'cute'} del dict['B'] print(dict)
需要注意的是,虽然字典是用大括号的,但在删除时依然使用的是中括号。
改:
如果要修改字典里的元素,直接重新给键赋值即可。
dict = {'A':'art','B':'big','C':'cute'} dict['B'] = 'beyond' print(dict)
查:
在字典中进行索引时,和删除一样,用的是中括号,中括号中存放字典的键,也就是说对字典元素进行索引时是通过键来索引的。
dict = {'A':'art','B':'big','C':'cute'} dict['B'] print(dict['B'])
之前在文章《Python入门:字符串的分片与索引、字符串的方法》中有提到过字符串的分片,在字典里,字符串是不可以进行分片的。
3. 元组
tuple = (val1,val2,val3,val4)
Python中的元组与列表类似,不同之处在于元组不可以修改,类似于稳固版的列表,因此在列表中可以使用的增删改的方法在元组中是不可以使用的,但是可以对元组中的元素进行索引,和列表类似。
tup = (1,2,'s',7) print(tup[0]) print(tup[-1]) print(tup[1:]) print(tup[:-2])
4. 集合
set = {val1,val2,val3,val4}
集合的概念有点接近于数学上的集合。每个集合中的元素是无序的、不重复的任何对象,我们可以通过集合去判断数据的从属关系,有时还可以通过集合把数据结构中重复的元素减掉。
集合不可以被切片也不能被索引,除了做集合运算之外,集合元素可以被添加和删除。
set = {7,1,8,3,4,5,3} set.add(0) # 新增元素0 set.discard(7) # 删除掉元素7 print(set) # 打印出的集合会从小到达排列,并去重
等后面如果用到集合时,再详细展开集合的运算。
后续会介绍下数据结构的一些小技巧。
操作环境:Python版本,3.6;PyCharm版本,2016.2;电脑:Mac
----- End -----
作者:杜王丹,微信公众号:杜王丹,互联网产品经理。
Python入门:数据结构的4种基本类型的更多相关文章
- Python入门 语法
Python入门 语法 语言介绍 对象,类型,值 编码规范 https://www.python.org/dev/peps/pep-0008/ 一.语言介绍 编程语言: 机器语言,汇编语言,高级语言 ...
- Python入门版
一.前言 陆陆续续学习Python已经近半年时间了,感觉到Python的强大之外,也深刻体会到Python的艺术.哲学.曾经的约定,到现在才兑现,其中不乏有很多懈怠,狼狈. Python入门关于Pyt ...
- Python入门篇-数据结构树(tree)的遍历
Python入门篇-数据结构树(tree)的遍历 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.遍历 迭代所有元素一遍. 二.树的遍历 对树中所有元素不重复地访问一遍,也称作扫 ...
- PYTHON 学习笔记1 PYTHON 入门 搭建环境与基本类型
简介 Python,当然大家听到这个名词不再是有关于像JAVA 一样的关于后台,我们学习Python 的目的在于对于以后数据分析和机器学习AI 奠定基础,Python 在数据分析这一块,可谓是有较好的 ...
- 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构
知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...
- python 四种数值类型(int,long,float,complex)介绍
Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍python 四种数值类型,需要的朋友可以参考一下. 数字数据 ...
- python的数据结构分类,以及数字的处理函数,类型判断
python的数据结构分类: 数值型 int:python3中都是长整形,没有大小限制,受限内存区域的大小 float:只有双精度型 complex:实数和虚数部分都是浮点型,1+1.2J bool: ...
- Python入门篇-类型注解
Python入门篇-类型注解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数定义的弊端 1>.动态语言很灵活,但是这种特性也是弊端 Python是动态语言,变量随时可 ...
- Python入门篇-数据结构堆排序Heap Sort
Python入门篇-数据结构堆排序Heap Sort 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.堆Heap 堆是一个完全二叉树 每个非叶子结点都要大于或者等于其左右孩子结点 ...
随机推荐
- Django-组件拾遗
Django的缓存机制 1.1 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候 ...
- [SDOI2010]捉迷藏
嘟嘟嘟 k-d tree板儿题. 建完树后对每一个点求一遍最小和最大曼哈顿距离,是曼哈顿,不是欧几里得. #include<cstdio> #include<iostream> ...
- Arduino IDE for ESP8266教程(二) 创建WIFI AP模式
创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(" ...
- Shell获取指定时间
时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...
- 使用pycharm调用模块后字体变灰
点击小灯泡提示出现以下内容:This inspection detects names that should resolve but don't. Due to dynamic dispatch a ...
- MATLAB——线性神经网络
这个函数默认使用最小二乘,所以不需要训练 % example5_1.m x=-:; y=*x-; % 直线方程为 randn(); % 设置种子,便于重复执行 y=y+randn(,length(y ...
- Fedora安装Snapd和Snap软件包
导读 Snappy包管理器是一个跨发行版的包管理器.它最初是为Ubuntu系统构建的,但现在其他主要的Linux发行版( Fedora, Linux Mint, RHEL, OpenSUSE,Arch ...
- SkylineGlobe 6.6 版本API更新
TEPro6.6API更新 概述 API6.6 较6.5只做了微小的更新,您可以很容易的将6.5的应用程序移植为6.6版本的应用程序. C#环境中,修改步骤如下: 创建SGWorld66实例代替SGW ...
- 11-(基础入门篇)WiFi模块开发,下载运行第一个程序
https://www.cnblogs.com/yangfengwu/p/9954840.html 第一就是重新刷一下固件,咱们的固件保持一致,有问题好处理 先刷空固件 我用的 所以刷8Mbit的 给 ...
- CF1110H Modest Substrings AC自动机、DP
传送门 如果\(r-l\)比较小,可以将所有满足条件的串扔进\(AC\)自动机然后在上面DP,从前往后确定字符串的每一位. 但是\(l,r \leq 10^{800}\)就十分不可行,所以需要优化这个 ...