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语句都是包含的关系。
 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。
 >>> L=['abc','bcd','cde']
>>> for n in enumerate(L):
... print(n)
...
(0, 'abc')
(1, 'bcd')
(2, 'cde')
>>> for index,item in enumerate(L):
... print(index,',',item)
...
0 , abc
1 , bcd
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。
  •  dict1 = {
    'Adam' : 95,
    'Lisa' : 85,
    'Bart' : 59,
    'Paul' : 75
    }

    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:数据结构(list, tuple, Dict & Set)的更多相关文章

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

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

  2. Python中list,tuple,dict,set的区别和用法(转)

    原文地址:http://www.cnblogs.com/soaringEveryday/p/5044007.html Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个 ...

  3. Python容器--list, tuple, dict, set

    ## Python 中有四种用于存放数据的序列--list, tuple, dict, set ## list 列表 - 可以存放任意类型数据的有序序列 - 列表可以由零个或多个元素组成,元素之间用逗 ...

  4. python中list/tuple/dict/set的区别

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.Python有6个序列的内置类型,但最常见的是列表list和元组t ...

  5. python list 和 tuple, dict 用于迭代代价

    #!/usr/bin/env python #-*- coding:utf-8 -*- import time start = time.time() for i in range(1000000): ...

  6. python 之 list,tuple,dict,set

    基本类型,  其中set好像提到的很少 list : []  根据字面, 是一个列表,  所以有序, 可以通过序号方位 tuple: ()  是不变的list, 通过序号访问 dict: {},  字 ...

  7. python中list,tuple,dict,set等深浅拷贝的问题记录

    对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变化是不同的. 1.赋值 赋值,只是创建一个变量,该变量指向原来内存地址,如: 1 2 3 n1 = {"k1" ...

  8. python 数据结构-元组tuple

    tuple0=() #空 tuple1="wo", #元组中包括单个元素用, tuple2="monkey","cat","chi ...

  9. list,tuple,dict,set的增删改查

    数据结构 list tuple dict set 增 append insert    d['key']=value  add 删 pop pop(0)    d.pop('name') pop re ...

随机推荐

  1. webservice用cxf发布SOAP

    cxf的安装,就是把文件解压,然后配置环境变量 http://cxf.apache.org/download.html这是官网下载 解压到这里 环境变量 wsdl2java命令测试 1.新建java项 ...

  2. LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)

    http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. 思路 ...

  3. Eclipse安卓项目导入android.support.design报错的解决办法

    导入android.support.design出错:1.项目除了需要依赖appcompat_v7包外还要design包2.design包就是在安卓sdk下Extras中的android.suppor ...

  4. Android开发-网络通信1

    使用 org.apache.http.client.HttpClient; 一开始从官网下载HttpClient 4.5:http://hc.apache.org/downloads.cgi ,解压之 ...

  5. js 冒泡型事件

  6. 关于JNDI那点事

    一.JNDI是什么? JNDI--Java 命名和目录接口(Java Naming and Directory Interface),是一组在Java应用中访问命名和目录服务的API. 二.JNDI好 ...

  7. mysql数据库优化课程---15、mysql优化步骤

    mysql数据库优化课程---15.mysql优化步骤 一.总结 一句话总结:索引优化最立竿见影 1.mysql中最常用最立竿见影的优化是什么? 索引优化 索引优化,不然有多少行要扫描多少次,1亿行大 ...

  8. tinyxml解析xml

    基于tinyxml做的简单的xml解析. 1.创建xml bool CreateXmlFile(string& szFileName) {//创建xml文件,szFilePath为文件保存的路 ...

  9. UVA-1312 Cricket Field (技巧枚举)

    题目大意:在一个w*h的网格中,有n个点,找出一个最大的正方形,使得正方形内部没有点. 题目分析:寻找正方形实质上等同于寻找矩形(只需令长宽同取较短的边长).那么枚举出所有可能的长宽组合取最优答案即可 ...

  10. HDU 4274 Spy's Work (树形DP)

    题意 给定一棵树,给出一些子树的权值关系,问是否矛盾(初始所有结点的下限为1) 思路 设lmin和lmax表示题目给定的限制范围,默认为[1..oo]:amin和amax表示实际符合要求的范围.从根节 ...