Python列表(list)、元祖(tuple)、集合(set),和字典(dictionary)区别和联系

Python的基础数据结构有:列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set)等,区别联系如下:

数据类型 列表
(list)
元祖
(tuple)
集合
(set)
字典
(dictionary)
表示 [] () {} {}
举例 a_list = [1, True, ‘aa’] a_tuple = (1, True, ‘aa’);<br> t2 = (1,) a_set = {1, True, ‘aa’};<br> s = set( [1, True, ‘aa’]) a_dict = {‘name’: ‘xuan’, ‘age’: 21}
是否有序 有序 有序 无序 无序
是否读写 读写 只读 读写 读写 读写
定义 a_list = [] a_tuple = () a_set =set();<br>not_sure = {} 字典 a_dict = {}
元素可修改 a_list[0] = 23 a_dict[‘age’] = 30
下标访问 a_list[0] = 23 a_tuple[0] a_dict[‘age’] = 30
添加元素 +、append、extend、insert 不可添加 add、update a_dict[‘new_key’] = ‘value’
删除元素 del、remove、pop()、pop(1)、clear 不可删除 discard、remove、pop、clear pop、popitem、clear
元素查找 index、count、in in in a_dict[‘key’]
布尔真值 非空 非空 非空 非空
定义 列表(list)是有序的集合,可以存放不同数据类型的数据,并且list中的每个元素的都对应着一个索引来标记其位置,且索引从0开始。 tuplelist类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号()list使用方括号[] dic字典是另一种可变的容器模型,且可存储任意类型对象。字典的每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{} set()函数是创建一个无序不重复元素集,可添加,删除数据,还可以计算交集、差集、并集等。
python的集合类型和 其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)sysmmetricdifference(对称差集)等数学运算,和我们初中数学学的集合的非常的相似。
一、列表list 、元祖-tuple、集合set、字典dic全方位分析
数据结构 表示 分析
列表list [] 列表list,用中括号“[ ]”表示
1.任意对象的有序集合
列表是一组任意类型的值,按照一定顺序组合而成的
2.通过偏移读取
组成列表的值叫做元素(Elements)。每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现
3.可变长度,异构以及任意嵌套
列表中的元素可以是任意类型,甚至是列表类型,也就是说列表可以嵌套
4.可变的序列
支持索引、切片、合并、删除等等操作,它们都是在原处进行修改列表
5.对象引用数组
列表可以当成普通的数组,每当用到引用时,Python总是会将这个引用指向一个对象,所以程序只需处理对象的操作。当把一个对象赋给一个数据结构元素或变量名时,Python总是会存储对象的引用,而是对象的一个拷贝
元祖tuple ()
1.任意对象的有序集合
与列表相同
2.通过偏移存取
与列表相同
3.属于不可变序列类型
类似于字符串,但元组是不可变的,不支持在列表中任何原处修改操作,不支持任何方法调用
4.固定长度、异构、任意嵌套
固定长度即元组不可变,在不被拷贝的情况下长度固定,其他同列表
5.对象引用的数组
与列表相似,元祖是对象引用的数组>

tuplelist相比,元祖tuple有以下特点
1.比列表操作速度
2.对数据“写保护
3.可用于字符串格式化中
4.可作为字典的key
字典dic {}
1.通过不是偏移量来读取
字典就是一个关联数组,是一个通过关键字索引的对象的集合,使用键-值(key-value)进行存储,查找速度快

2.任意对象的无序集合
字典中的项没有特定顺序,以“键”为象征

3.可变长、异构、任意嵌套

同列表,嵌套可以包含列表和其他的字典等

4.属于可变映射类型
因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值。字典是唯一内置的映射类型(键映射到值的对象)

5.对象引用表
字典存储的是对象引用拷贝,和列表一样。字典的key是不能变的,list不能作为key字符串、元祖、整数都可以

diclist比较,dict有以下几个特点:
1.查找和插入的速度极,不会随着key的增加而增加
2.需要占用量的内存,内存浪费多
而list相反
1.查找和插入的时间随着元素的增加而增加
2.占用空间小,浪费内存很少
所以,dict是用空间来换取时间的一种方法
集合 ()
1.是一组key的集合,但不存储value,并且key不能重复

创建一个set,需要提供一个list作为输入集合,s = set([1,2,3]),注意,传入的参数[1, 2, 3] 是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[ ]不表示这是一个list

2.重复元素在set自动被过滤

set可以看成数学意义上的无序无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
还有一种集合是forzenset( ),是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法

setdict对比,集合set有以下特点

1.setdict的唯一区别仅在于没有存储对应的value
2.set原理dict一样,同样可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”

二、字典dic、列表list、集合set、元祖tuple相互比较

比较 详情
字典dict和列表list的比较 dict的查找和插入的速度极,不会随着key的增加而变慢。但是需要占用量的内存,内存浪费多。相反,list查找和插入的时间随着元素的增加而增加。但是占用空间小,浪费内存很少
字典dict和集合set比较 唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
元祖tuple与列表list比较 tuplelist 类似,不同之处在于tuple中的元素能进行修改。而且tuple使用小括号()list使用方括号[]
三、Python一些内置函数
编号 函数 注释
1 cmp(A, B) 比较可为list、tuple等的A、B,A>B为1,A=B为0,小于为-1
2 len(obj) 计算元素个数
3 max(obj) 返回元素最大值
4 min(obj) 返回元素最小值
5 reversed(obj) 对元素进行翻转
6 enumerate(obj) 遍历list的元素,返回序号及其对应的元素 forxy in list
7 zip() 打包成tuple(元组),然后返回由这些tuples组成的list(列表)

列表[]、元组()和字符串都是序列,字符串是字符的序列,列表和元祖任意类型的序列
注:本博主csdn同步链接

参考:

[1].python列表(list)、元祖(tuple)、集合(set),和字典(dictionary)的比较
[2].Python学习笔记(四)—列表(list)、元组(tuple)和字典(dictionary)、集合(set)
[3].Python学习笔记(四)—列表(list)、元组(tuple)和字典(dictionary)、集合(set)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容