Python中的List,Tuple,Dic,Set

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

Python中的List,Tuple,Dic,Set

List定义

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可.

1list=['du','dpsl',123,5926]2PRintlist[2]3list[2]=3214printlist5dellist[0]6printlist

其结果将是:

123['du','dpsl', 321, 5926]

['dpsl', 321, 5926]

List切片

如果要取最后一位,怎么办?用-1表示最后一个元素。类似的,倒数第二用 -2 表示,倒数第三用 -3 表示,倒数第四用 -4。

1list=['123','dudu','iiiu']2printlist3printlist[-1]4printlist[-2]5list.insert(0,'du')#增加元素 ,第一个参数表示增加到第一个位置上。pop()方法总是删掉list的最后一个元素,并且它还返回这个元素。6printlist

结果是:

> ['123','dudu','iiiu']

iiiu

dudu

['du','123','dudu','iiiu']

元组 tuple

Python的元组与列表类似,不同之处在于元组的元素不能修改(后面会有个例子证明其也是“可变”的)。元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

元组可以使用下标索引来访问元组中的值

可以使用del语句来删除整个元组,但是不允许删除元组中的元素。

tuple没有append()方法,也没有insert()和pop()方法。

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。比如:

1tup1=('123',31)2printtup13tup2=('dudu','du',123,321,'zzz')4printtup25tup3=tup1+tup26printtup378print"t2:",tup2[2:4]910print"======="1112deltup113printtup1#此时已经没有tup1了。

其结果是:

> ('123', 31)

('dudu','du', 123, 321,'zzz')

('123', 31,'dudu','du', 123, 321,'zzz')

t2: (123, 321)=======

>Traceback (most recent call last):

File"/demo/test.py", line 19,inprinttup1

NameError: name'tup1'isnotdefined

一个特殊的地方:因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”。

tup1=(121,)printtup1

> (121,)

上面写到元组是不可变的。那么,元组是真的不可变么?看例子:

1t = ('du','dudu', ['A','B'])2printt3L=t[2]#得到元组中的索引为2的元素,即其中的List。4L[0]='XX'#修改List中的第一个元素。5L[1]='YYY'#修改List中的第一个元素。6printt

看结果:

> ('du','dudu', ['A','B'])

('du','dudu', ['XX','YYY'])

明明已经变了嘛,那么解释:

表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

字典 Dicdict的特点:用空间来换取时间的一种方法dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

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

由于dict是按 key 查找,所以,在一个dict中,key不能重复。

dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样.

dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

1d ={2'sfg': 95,3'itor': 85,4'way': 595}6forkeyind:7printd[key]#通过key得到value,与list有点相似,只是list是通过索引得到值。8printkey9print'========='

85itor=========

95sfg=========

59way=========

setset可以看成数学意义上的无序和无重复元素的集合.

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

感谢:廖学峰官网

慕课网

汇智网

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航