list: Python中内置的有序数据结构,即数组。由于Python是动态语言,因此数组元素的类型没有限定。

  • classmates = [“Michael”, “David”,”Bob”,”Tracy”]
  • 空列表:empty_list = []
  • 使用负数来表示倒叙,即索引-1来表示最后一项:classmates[-1]打印出Tracy,classmates[-4]打印出Michael,注意倒叙不是从0开始,因为-0和0没区别。
  • list.insert(index, data) 在指定的位置插入指定内容。
  • list.append(new_list) 在list结尾将整个new_list作为一个元素插入。
  • list.extend(new_list)在list结尾将new_list的元素逐一插入。
  • list.pop()返回并删除list的最后一个元素。
推导公式的多层嵌套:
# 例:打印1~999中个位数和百位数相同的数字,每个for/if语句都是包含的关系。
1 print(x*100 + y*10 + z for x in range(10) for y in range(10) for z in range(10) if x > 0 and x == z)

for语句中获得list下标:enumerate(list)会将list转换成(index,item)的tuple。

 1 >>> L=['abc','bcd','cde']
 2 >>> for n in enumerate(L):
 3 ...     print(n)
 4 ...
 5 (0, 'abc')
 6 (1, 'bcd')
 7 (2, 'cde')
 8  >>> for index,item in enumerate(L):
 9 ...     print(index,',',item)
10 ...
11 0 , abc
12 1 , bcd
13 2 , cde 

click me

tuple:不可变的列表
  • list使用的是中括号[]声明,tuple使用小括号()声明。
  • 由于tuple不可变,自然也就无法使用insert()/append()/extend()/pop()等方法。
  • ()可以创建不同元素数量的tuple,但注意当tuple的元素只有一个的时候,要使用逗号:a_tuple=(1,)
    • 因为没有逗号的话会被当做是四则运算中的括号,为免混淆会多了一个逗号。
  • tuple的不可变指的是元素地址的不可变,而元素如果是引用类型,则所引用的地址是可变的。例如tuple的元素中有一个list,则该list的内容可变。
dict (字典/dictionary):

  • key-value的格式,其实就是JSON。
  • 1 dict1 = {
    2     'Adam' : 95,
    3     'Lisa' : 85,
    4     'Bart' : 59,
    5     'Paul' : 75
    6 }

    click me

  • 可通过BIF: len(dict) 查看dict的长度。
dict的三个特点:
  • 查找速度:比list快,相对地占用较大内存。
  • 元素无序。
  • key必须是不可变且不可重复,如字符串、整数、浮点数
操作dict
  • 添加一个item: dict[‘key’]=value
  • 获取dict的key集合:dict.keys()
  • 获取dict的values集合:dict.values()
  • 获取个key-value pair的tuple:dict.items()

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

set
  • 无序、不重复(对大小写敏感)
  • 可通过BIF:set(list)来创建
  • 通过in来判断item是否在set中:’Paul’ in s >> True

set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。

set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。

参考资料:

  • Python.org
  • 廖雪峰的个人网站

转载于:https://www.cnblogs.com/lawrencechen/p/4371408.html

Python:数据结构(list, tuple, Dict Set)相关推荐

  1. Python中list,tuple,dict,set的区别和用法

    Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List ...

  2. 1.4、Python数据结构——字典(dict)

    目录 1.定义字典 2.使用字典 2.1.访问字典,用键查找 2.2.修改字典 2.3.新增元素 2.4.删除元素 3.字典的其他操作 3.1.clear(),清空字典所有元素 3.2.copy(), ...

  3. python数据结构之字典(dict)——超详细

    字典(dict) 1.什么是字典 字典是具有映射关系的一个集合,有自己的标志性符号,用{}来定义.字典由多个键以及其对应的键值共同构成的,字典是无序的,只讲究对应关系,并且字典中的键是独一无二的 1. ...

  4. Python中的list/tuple/dict/set数据类型详解

    Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...

  5. python list/tuple/dict/set/deque的简单比较、优化和时间复杂度(表格)

    文章目录 一.关于增删改查 二.关于时间复杂度 2.1.时间复杂度: 2.2.比较: 2.3.特点: 2.4.优化: 一.关于增删改查 序列 list tuple dict set deque 能否增 ...

  6. Python数据结构——tuple

    tuple 元组 什么是tuple 元组是一种和列表非常相似的线性数据结构,也支持不同的数据类型. 最大的区别就是元组一旦创建不可改变,和string一样,所有改变元组内容的操作都会返回一个新的元组. ...

  7. 学习Python(5)排序tuple元组dict字典set集合

    目录 学习Python(5)排序&tuple元组&dict字典&set集合 排序 冒泡排序 选择排序 元组 创建元组 元组元素的访问 元组操作 元组功能 二维元组 字典 创建字 ...

  8. python学习笔记(二)python基础知识(list,tuple,dict,set)

    1. list\tuple\dict\set d={} l=[] t=() s=set() print(type(l)) print(type(d)) print(type(t)) print(typ ...

  9. python3 namedtuple_你不能低估的Python数据结构Namedtuple(二)

    上篇你不能低估的Python数据结构Namedtuple(一)讲了namedtuple的一些基本用法,本篇继续. namedtuples和数据类(Data Class)之间有什么区别? 功能 在Pyt ...

最新文章

  1. FusionCharts参数的详细说明和功能特性
  2. 侧输出流简单应用-打印的完整流程
  3. 技术脱钩后软硬件磨合优化不失为一条出路
  4. Java Message System简介
  5. ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
  6. oracle报表范例1 (转载)
  7. Liunux 编程遇到的SIGBUS信号
  8. js undefined null
  9. 计算机网络结构与数据交换技术
  10. 如何制作一个HTML网页
  11. Oracle LOB
  12. 怎么批量生成100多条短视频素材
  13. java编程试算平衡_发生额试算平衡要求本期每个账户借方发生额合计都与贷方发生额合计相等()_学小易找答案...
  14. Zero Forex领汇来告诉你什么是WH?
  15. dota2游戏心得
  16. 基于CTP的国内期货程序化交易之行情获取讲解
  17. HTML语义化标签理解
  18. python多台电脑聊天室_python的多人多功能聊天室
  19. 比尔盖茨与乔布斯,你们觉得,二人谁更伟大
  20. java项目中没有jdk包_彻底搞懂Java开发工具包(JDK)安装及环境变量配置

热门文章

  1. 计算机辐射有那些预防措施,冰箱辐射有多大 冰箱辐射防范措施
  2. 金蝶kiss对计算机软件的要求,金蝶软件的产品适用范围分析
  3. python实现屏幕录制_JavaScript 屏幕录制 API 学习
  4. java 后台线程作用_Java 后台线程介绍
  5. matlab gui 制动程序设计,Matlab的GUI程序设计程序.doc
  6. generator.xml mysql_Mybatis 使用generator.xml生成实体及mapper
  7. hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
  8. 排序 oracle,oracle排序
  9. shell正则表达式截取字符串_从CVE20208816聊聊shell参数扩展
  10. oracle 删除中文表,oracle - 删除全局临时表 - SO中文参考 - www.soinside.com