众所周知,每种编程语言都有基础的数据结构。python作为一种强大的编程语言,数据结构是怎样的呢?
一:数据结构分类
- 列表(list)
- 元组(tuple)
- 字典(dict)
- 集合(set)
二:列表(list)
1:列表类似C语言中的数组,与C不同的是,python列表中的元素可以为任意的对象,而C限制了数组的元素为同一种类型。
列表用方括号表示
列表具有以下特点
- 列表中的元素可变
- 有序
- 列表中的元素可以是任意的
list1 = [1,2,3,'python',{'C':'object'}]
2:索引
既然列表中的元素是有序的,则python就可以利用一些方法访问列表中的元素。列表中的正向索引从0开始对应列表的第一个元素,负值则代表逆向索引,表示从列表的结尾开始访问。
list2 = [1,2,3,4,5]
print "list2[2]:",list2[2]
print "list2[-1]:",list2[-1]
输出为
list2[2]: 3
list2[-1]: 5
3:列表的更新
- 增加
列表元素的增加有两种方式,一种是insert(),另外一种是append()。前者是将元素添加到指定位置,后者是将元素插到列表末端。
list2 = [1,2,3,4,5]
list2.insert(1,7)
list2.append(6)
print list2
输出为
[1,7,2,3,4,5,6,]
- 删除
remove():指定删除某个值
list2 = [1,2,3,4,5]
list2.remove(3)
print list2
输出
[1,2,4,5]
del()、pop():删除指定位置的值
list2 = [1,2,3,4,5]
del list2(2)
print list2
输出
[1,2,4,5]
三:元组(tuple)
元组与列表类似,但是不同之处是元组的元素不可修改。
元组用小括号表示。
因为元组是不可变对象,所以元组就没有增删改这些操作,保证了代码的安全性。
一般元组这么定义
tup1 = (1,2,3,[a,b,c])
如果元组的元素中包含列表,那么列表中的元素是可以修改的。
还有一点要注意,元组如果只有一个元素,那么必须表示成(1,)
四:字典(dict)
在python中,字典由键和值两个组成,用{}表示
字典的特点:
- 键(key)和值(value)成对出现
- 键不能重复,值可以重复
- 键不可以改变,值可以修改
- 字典中的元素是无序的
1:字典的索引
用键值作为索引查找值。
dict1 = {'a':'1','b':'2','c':3}
print(dict['a'])
print(d.get('a'))
print(d.get('key'))
输出
1
1
None
2:修改字典
dict1 = {'a':'1','b':'2','c':3}
dict['a']=5
d.setdefault('d',4)
输出
{'a':'5','b':'2','c':'3','d':'4'}
3:增加字典
字典中没有insert方法,但是可以利用这种方法增加
dict2 = {'a':'1','b':'2'}
dict2["c"] = "3"
print (dict2)
输出
{'a':'1','b':'2','c':'3'}
或者利用update()增加多个元素
dict2 = {'a':'1','b':'2'}
dict2.update({"c":"3","d":"4"})
print (dict2)
输出
{'a':'1','b':'2','c':'3','d':'4'}
4:删除字典元素
通过del()方法删除
dict2 = {'a':'1','b':'2'}
del dict2["a"]
print (dict2)
输出
{'a':'1'}
五:集合(set)
集合类似于数学中集合的概念
集合的特点:
- 无序
- 不可重复
集合不可以做切片和索引,但是可以添加和删除元素。
1:新增元素
set1 = {3,5,6,2,1,3}
set1.add(4)
print(set1)
输出
{1,2,3,4,5,6}
2:删除元素
set1 = {3,5,6,2,1,3}
set1.discard(6)
print(set1)
输出
{1,2,3,5}
这里要注意的是:集合在输出时会对元素进行从小到大的排列,并且去重。
特别重要的一点就是:python中有四种不可变类型(数字,字符串,元组,不可变集合),如果对其重新赋值,则是新建了一个对象