这里总结一下Python中的内置数据结构(Built-in Data Structure):列表list、元组tuple、字典dict、集合set,涵盖的仅有部分重点,详细地去介绍每一个知识点并未涉及。python
列表中的每一个元素均可变的
意味着能够对每一个元素进行修改和删除数组
列表是有序的,每一个元素的位置是肯定的,能够用索引去访问每一个元素安全
>>> x = [1,2,3] >>> y = {'name':'Sakura'} >>> z="Test" >>> a=[x,y,z] >>> a [[1, 2, 3], {'name': 'Sakura'}, 'Test']
以为Python中的list和C语言中的数组蛮像的,只是list中的元素类型能够为Python中的任意对象,C中的数组只能是同种类型。当访问他们中的元素时,均可采用索引。这里须要注意的是,list不只能够向数组那样正向索引也能够反向索引。数据结构
list中有不少的方法,这里仅介绍对list中元素进行增删查改的方法。
app
利用正反索引对元素进行查找函数
对元素修改能够直接赋值替换ui
列表中还有其余方法如pop()删除末尾元素,pop(i)删除指定位置i的元素,append()向末尾添加元素code
能够经过list将序列建立为列表
Python中包含6中內建的序列:列表,元组,字符串、Unicode字符串、buffer对象和xrange对象。对象
>>> list("Hello,world") ['H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
其实list为一种类型并不是函数,但此处两者并没有多大区别。下面的tuple、dict都如此。blog
>>> test=(1,2,3) >>> test (1, 2, 3) >>> test[1]=4 Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> test[1:1] = 4 Traceback (most recent call last): File "<input>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> test[1] 2
从上可知,tuple不支持对元素的修改(包括删除),tuple一初始化便固定下来了。
再来看一个例子。
>>> test=('a','b',['A','B']) >>> print(test) ('a', 'b', ['A', 'B']) >>> test[2][0]='x' >>> test[2][1]='y' >>> test ('a', 'b', ['x', 'y'])
这里看似元素中的元素改变了,但是仔细分析下,元组中的第三个元素是一个列表。
代码3.4行改变的是列表中的值,元组所指的这个元素列表并无改变,须要注意这点!
这就涉及到Python中的可变对象和不可变对象,像list这样的就是可变对象,tuple即是不可变对象。
元组是固定的列表,那么元组的意义何在呢?
由于tuple不可变,因此代码更安全。若是可能,能用tuple代替list就尽可能用tuple
而且须要注意元组中元素的可变性!!
空的tuple能够记为(),若只有一个元素的tuple记为(1,)
由于记为(1)的话,这个实际表明的是数字1,此时()是数学公式中的小括号
由于元组是固定的列表,因此其内置的大多数的方法和列表是差很少的。
>>> tuple('Hello,world!') ('H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd', '!')
字典这个概念就是基于现实生活中的字典原型,生活中的使用名称-内容对数据进行构建,Python中使用键(key)-值(value)存储,也就是C++中的map。
字典中的数据必须以键值对的形式出现
键不可重复,值可重复
键若重复字典中只会记该键对应的最后一个值
字典中键(key)是不可变的,为不可变对象,不能进行修改;而值(value)是能够修改的,能够是任何对象。
在dict中是根据key来计算value的存储位置,若是每次计算相同的key得出的结果不一样,那dict内部就彻底混乱了。
>>> test={'Mon':1} >>> 'Fri' in test False >>> test.get('Fri') >>> test.get('Fri',-1) -1
对值得修改能够采用直接覆盖原值的方法
dict中的元素是无序的,不能够采用分片。
可使用dict,经过其余映射或者(键,值)对的序列创建字典。
>>> test=[('name','Sakura'),('age',20)] >>> d = dict(test) >>> d {'name': 'Sakura', 'age': 20}
dict也可使用关键字参数建立字典,也可用映射做为dict参数,dict若不带任何参数,将返回一个空字典
>>> d = dict(name='Sakura',age=20) >>> d {'name': 'Sakura', 'age': 20} >>> a=dict() >>> a {}
集合更接近数学上集合的概念。集合中每一个元素都是无序的、不重复的任意对象。
能够经过集合去判断数据的从属关系,也能够经过集合把数据结构中重复的元素减掉。集合可作集合运算,可添加和删除元素。
建立集合时须要用list做为输入集合,可经过add()方法增长元素,remove()方法删除元素
>>> test=set([1,2,3]) >>> test {1, 2, 3} >>> test.add(3) >>> test {1, 2, 3} >>> test.add(6) >>> test {1, 2, 3, 6} >>> test.remove(3) >>> test {1, 2, 6}
集合中重复的元素会被过滤掉
Python中的集合也能够进行集合的之间的交、并等运算
>>> s1 = set([1,2]) >>> s2=set([2,3]) >>> s1 & s2 # s1与s2 {2} >>> s1 | s2 # s1与s2进行或运算 {1, 2, 3}