Python有4种数据结构:列表(list)、字典(dictionary)、元组(Tuple)、集合(set)。从最直接的感官上来说,这四种数据结构的区别是:列表中的元素使用方括号括起来,字典和集合是花括号,元组是圆括号,其中字典中的元素都是带有“:”的key-value对应关系组。

1、列表(List)

  1. #1、列表中的每一个元素都是可以变的
  2. #2、列表中的元素都是有序的,也就是说每一个元素都有一个位置
  3. #3、列表可以容纳Python中的任何对象
  4.  
  5. fruit = ['Apple','Orange','pear']
  6. fruit.insert(1,'grape') #在第二个数据前面插入
  7. print(fruit)
  8. fruit.remove('pear') #删除
  9. print(fruit)
  10. fruit[0] = 'Grapefruit' #替换
  11. print(fruit)

2、字典(Dictionary)

  1. #1、字典中数据必须是以键值对的形式出现
  2. #2、逻辑上,键是不能重复的,而值可以重复
  3. #3、字典中的键Key是不可变的,也就是无法修改的。而值Value是可变的,可修改的,可以是任何对象
  4.  
  5. a = {'key':'','key':''} #重复的键值对,只会输出一个
  6. print(a)
  7.  
  8. Nasdaq_code = {'BIDU':'baidu','SINA':'sina'}
  9. Nasdaq_code['YOKU'] = 'youku' #添加元素
  10. print(Nasdaq_code)
  11. Nasdaq_code.update({'FB':'facebook','TSLA':'Tesla'}) #批量添加
  12. print(Nasdaq_code)
  13. del Nasdaq_code['FB'] #删除元素
  14. print(Nasdaq_code)

3、元组(Tuple)

  1. #1、元组不可修改
  2. #2、元组可被查看索引,方式同列表
  3. letters = ('a','b','c','d','e','f')
  4. print(letters[0])

4、集合(Set)

  1. #1、集合中的元素是无序、不重复的任何对象
  2. #2、集合不能被切片也不能被索引。可做集合运算,集合元素可以被添加还有删除
  3.  
  4. a_set = {1,2,3,4}
  5. a_set.add(5) #添加
  6. print(a_set)
  7. a_set.discard(5) #删除
  8. print(a_set)

5、推导式(列表解析式)

  现在我有10个元素要装进列表中,普通的写法是这样的:

下面换成列表解析的方式来写,是这样的:

  如下图,列表推导式可以简单的看成两部分。红色虚线后面的是我们熟悉的for循环表达式,虚线前面的可以认为是我们想要放在列表中的元素。

列表解析式的执行效率比较:(列表解析式的执行效率较高,性能较优)

  1. #推导式 list = [item for item in iterable],先iterable,在进行item的输出
  2. import time
  3. a=[]
  4. t0 = time.clock()
  5. for i in range(1,2000):#使用循环时的执行时间
  6. a.append(i)
  7. print(time.clock() - t0,'seconds process time')
  8.  
  9. t0 = time.clock()
  10. b=[i for i in range(1,200)]#使用列表解析式的执行时间
  11. print(time.clock() - t0,'seconds process time')
  1. #列表解析式示例
  2. a = [i**2 for i in range(1,10)]
  3. print(a)
  4. c = [j+1 for j in range(1,10)]
  5. print(c)
  6. k = [n for n in range(1,10) if n %2 ==0]
  7. print(k)
  8. z = [letter.lower() for letter in 'ABCDEFGHIGKLMN']
  9. print(z)
  10. d = {i:i+1 for i in range(4)}
  11. print(d)
  12. g = {i:j for i,j in zip(range(1,6),'abcde')}
  13. print(g)
  14. l = {i:j.upper() for i,j in zip(range(1,6),'abcde')}
  15. print(l)

Python学习笔记系列——数据结构相关的更多相关文章

  1. python学习笔记系列----(三)数据结构

    这一章主要是介绍了python一些常用的数据结构,比如list,tuple,dictionary,set,以及一些实用遍历技巧,主要讲的还是list. 3.1 list 主要介绍了list的一些常用的 ...

  2. python学习笔记系列----(一)python简介

    一个月前,就按下决心要系统的学习下python了,虽然之前有学习过java,学习过c++,也能较为熟练的使用java做自动化测试看懂c++里的业务逻辑,但是实际上有那么多的东西自己还是不清楚,今天下定 ...

  3. Python学习笔记系列

    1.小甲鱼 python 学习系列笔记

  4. python学习笔记系列----(八)python常用的标准库

    终于学到了python手册的最后一部分:常用标准库.这部分内容主要就是介绍了一些基础的常用的基础库,可以大概了解下,在以后真正使用的时候也能想起来再拿出来用. 8.1 操作系统接口模块:OS OS模块 ...

  5. python学习笔记五——数据结构

    4 . python的数据结构 数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.python提供的几种内置数据结构——元组.列表.字典和序列.内置数据结构是Python语言的精 ...

  6. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  7. python学习笔记系列----(七)类

    7.1 python类和相关术语的简介 Python 通过最小的新语法和语义在语言中实现了类. 它是 C++ 或者 Modula-3 语言中类机制的混合.类的大多数重要特性都被完整的保留下来:类继承机 ...

  8. python学习笔记系列----(五)输入和输出

    这一章主要是讲述程序展示其数据的一些方法,一般都是直接按照一定的格式输出在屏幕,或者写入到文件以便以后使用.按照一定格式的输出,在python中实际就是对str的操作,主要就是介绍了formart() ...

  9. python学习笔记系列----(二)控制流

    实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了P ...

随机推荐

  1. --num 与 num-- 的区别

    递增++和递减--操作符都属于一元操作符. 只能操作一个值的运算符是一元操作符,一元操作符是ECMscript中最简单的操作符. 递增.递减操作符介绍 递增.递减操作符有两个版本:前置型和后置型.顾名 ...

  2. pom.xml 如果使用 mvn exec:exec 命令运行项目

    pom.xml 如果使用 mvn exec:exec 命令运行项目,红色字体要与groupid相同 <project xmlns="http://maven.apache.org/PO ...

  3. Ubuntu中利用rename批量重命名

    1.简介: 通常在机器视觉的学习过程中,需要批量处理一些图片,通常会涉及到批量重命名的问题,可以利用rename命令快速实现图片的批量重命名 2.rename命令格式: rename [-v] [-n ...

  4. CentOS7系列--1.4CentOS7服务

    CentOS7服务管理 1. 查看服务 1.1. 查看所有运行的服务 [root@centos7 ~]# systemctl -t service UNIT LOAD ACTIVE SUB DESCR ...

  5. 产品相关 做产品VS做项目

    做产品VS做项目 by:授客 QQ:1033553122 相关定义 根据GB/T19000—2008<质量管理体系基础和术语>,有以下定义 过程process 一组将输入转化为输出的相互关 ...

  6. Jmeter入门--安装教程

    jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动 ...

  7. 摄像机内参相关(3ds max)

    一般的原理参考:http://ksimek.github.io/2012/08/13/introduction/ 对于3ds max建模时使用的target camera,如果想得到它的内外参,可以利 ...

  8. win8中 cmd直接以管理员权限运行

    一.组合键 WIN+X   二.锁定到任务栏,方便以后快速启动     三.控制面板->控制中心     四.更改用户账户控制设置--调到最低 好了,点击任务栏的命令提示符

  9. September 24th 2017 Week 39th Sunday

    To live is the rarest thing in the world. Most people exist. That is all. 生活是世间最罕见的事情:生存,却是世间最常见的事情: ...

  10. 导出类成员里含有stl对象

    How to export an instantiation of a Standard Template Library (STL) class and a class that contains ...