数据结构:通俗点说,就是储存大量数据的容器。这里主要介绍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中的任何对象。

接下来看下列表的增删改查。

增:

1

2

3

1 list = [1,'dwd',3.6]

2 list.insert(0,'Python')

3 print(list)

用insert方法可以实现在列表中增加元素。insert方法需要写明增加在哪个位置和增加的内容,新增元素的实际位置是在指定位置元素之前的位置;如果指定的位置不存在,默认会增加在列表末尾。

1

2

3

4

5

6

1 list = [1,'dwd',3.6]

2 list[0:0]= [9]

3 # 【0:0】是指在list中的第1个位置插入新元素

4 list[3:3]= ['a']

5 # 【3:3】是指在list中的第4个位置插入新元素

6 print(list)

上面说到的这两种方法都是添加单个元素,除了添加单个元素外,还可以添加多个元素,用extend方法来实现。

1

2

3

4

5

1 list_a= [1,'dwd',3.6]

2 list_b= ['Python',56,'game']

3 list_a.extend(list_b)

4 # extend方法用于在列表末尾一次性追加另一个列表中的多个值

5 print(list_a)

删:

1

2

3

1 list = [1,'dwd',3.6]

2 list.remove('dwd')

3 print(list)

删除列表中的元素除了用上面的remove方法来实现外,也可以用del关键字来声明:

1

2

3

4

1 list = [1,'dwd',3.6]

2 del list[0:2]

3 # 【0:2】是删除第1和第2个位置的元素

4 print(list)

改:

1

2

3

4

1 list = [1,'dwd',3.6]

2 list[2]= 7

3 list[0]= 'start'

4 print(list)

如果想要替换掉列表中的某个元素,可以直接给列表某位置的元素重新赋值,list[2]指list列表中的第3个元素。

查:

列表的索引与之前文章《Python入门_浅谈字符串的分片与索引、字符串的方法》中提到的字符串的索引类似,同样是分正反两种索引方式,可以从前往后,也可以从后往前索引。比如:

1

2

3

4

5

6

7

8

9

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)可以重复;

键不可变,无法修改;值可修改,可以是任何对象。

即使字典中有重复的键,打印出来时也只会出现一次。比如:

1

2

1 dict = {'A':'art','B':'big','C':'cute','C':'cute'}

2 print(dict)

接下来看下字典的增删改查。

增:

字典中没有像列表那样有一个现成的insert方法可以使用,但可以通过下面这种方式插入元素,元素默认会插入在最后一个位置。

1

2

3

1 dict = {'A':'art','B':'big','C':'cute'}

2 dict['D']= 'dictionary'

3 print(dict)

上面讲到在列表中增加多个元素时可以使用extend方法来实现,在字典中也有对应的update方法来实现添加多个元素。

1

2

3

1 dict = {'A':'art','B':'big','C':'cute'}

2 dict.update({'D':'dictionary','E':'exam'})

3 print(dict)

删:

在字典中删除某元素,也可以使用del关键字。

1

2

3

1 dict = {'A':'art','B':'big','C':'cute'}

2 del dict['B']

3 print(dict)

需要注意的是,虽然字典是用大括号的,但在删除时依然使用的是中括号。

改:

如果要修改字典里的元素,直接重新给键赋值即可。

1

2

3

1 dict = {'A':'art','B':'big','C':'cute'}

2 dict['B']= 'beyond'

3 print(dict)

查:

在字典中进行索引时,和删除一样,用的是中括号,中括号中存放字典的键,也就是说对字典元素进行索引时是通过键来索引的。

1

2

3

1 dict = {'A':'art','B':'big','C':'cute'}

2 dict['B']

3 print(dict['B'])

之前在文章《Python入门_浅谈字符串的分片与索引、字符串的方法》中有提到过字符串的分片,在字典里,字符串是不可以进行分片的。

3. 元组

tuple = (val1,val2,val3,val4)

Python中的元组与列表类似,不同之处在于元组不可以修改,类似于稳固版的列表,因此在列表中可以使用的增删改的方法在元组中是不可以使用的,但是可以对元组中的元素进行索引,和列表类似。

1

2

3

4

5

1 tup= (1,2,'s',7)

2 print(tup[0])

3 print(tup[-1])

4 print(tup[1:])

5 print(tup[:-2])

4. 集合

set = {val1,val2,val3,val4}

集合的概念有点接近于数学上的集合。每个集合中的元素是无序的、不重复的任何对象,我们可以通过集合去判断数据的从属关系,有时还可以通过集合把数据结构中重复的元素减掉。

集合不可以被切片也不能被索引,除了做集合运算之外,集合元素可以被添加和删除。

1

2

3

4

5

6

7

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

python 传感器数据结构_Python常用的数据结构详解相关推荐

  1. python 类 实例_Python类的实例详解

    类(class)是一个用户自定义类型,开发者可以将其实例化以获得实例(instance),实例表示这种类型的对象.在Python中,类就是对象,开发者可以像对其他对象那样处理函数,可以在调用函数时传递 ...

  2. python pdb 安装_Python调试工具pdb使用详解

    Python调试工具pdb使用详解 [简介] pdb是Python自带的一个包,为python程序提供了一种交互的源代码调试功能. [使用方法] 1. 使用命令: python -m pdb xxx. ...

  3. python输出命令_Python输出各行命令详解

    创建main.py文件并粘贴下面代码 点击右键运行Debug 'main'后,下方的Debug窗口会出现ImportError: No module named 'bottle'这样的提示,提示导入b ...

  4. python md5加密_Python MD5加密实例详解

    详解Python MD5加密 Python 3下MD5加密 # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待 ...

  5. python 相对导入_Python相对导入机制详解

    Google FEB 26TH, 2015 Python相对导入机制详解 这个答案能解释大多关于 relative import,即相对导入的疑惑,讲解十分详尽清晰,算是 SO 上被低估的一个答案. ...

  6. 简述python文件操作_Python 文件操作的详解及实例

    Python 文件操作的详解及实例 一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. ...

  7. python外部库是什么_Python 常用外部模块详解

    RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统,他遵循Mozilla Public License开源协议,MQ全称为Message Queue,消息队列(MQ) ...

  8. python循环体结束标志_Python循环语句代码详解:while、for、break

    1 while循环 循环语句是程序设计中常用的语句之一.任何编程语言都有while循环,Python也不例外.while循环的格式如下所示. while(表达式): - else: - while循环 ...

  9. python queue模块_Python的queue模块详解

    Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 基本FIFO队列 clas ...

最新文章

  1. QT 烦人的parent该如何理解
  2. 苹果6s解除耳机模式_出大问题!苹果或将砍掉3D Touch?
  3. mysql输入错误怎样更正_HotDB MySQL 篇| MySQL 源码系列的补充与更正
  4. python gif压缩_实用性视频转gif,压缩等常用文件工具处理及转换(含自写python工具)...
  5. CG-CTF-Web-GBK Injection
  6. exar 带容隔离_带有美白功效的6款隔离霜 美白隔离两不误
  7. Ubuntu 14.04 为 root 帐号开启 SSH 登录
  8. css摇曳的_HTML5+CSS3实现树被风吹动摇晃
  9. 爬虫,反爬工具fake-useragent,随机useragent模块教程
  10. 45.UITableView去除分割线
  11. 0505.Net基础班第十三天(面向对象多态)
  12. 如何停止Linux系统中占用CPU 100%的进程
  13. asp.net Ajax表单提交 二种方式数据处理 asp.net
  14. (转载)Memcached预定义常量
  15. 15 张 Vim 速查表奉上,帮你提高N倍效率!
  16. Unity2D入门(一):编辑素材、绘制地图
  17. 设计一套前端项目组织结构
  18. BUUCTF持续更新中
  19. 微信小程序调用weUI库
  20. ijkplayer源码---音频播放

热门文章

  1. IE浏览器下ajax缓存导致数据不更新的解决方法
  2. PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
  3. Nginx 502 bad gateway的解决方案
  4. ssh遇到port 22:No route to host问题的解决方法
  5. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法
  6. document.getElementById vs jQuery $()
  7. Javascript迄今为止添加了前导零
  8. 使用curl从HTTP POST仅获取响应标头
  9. vue的插槽slot
  10. 机器学习经典算法详解及Python实现--元算法、AdaBoost