众所周知,每种编程语言都有基础的数据结构。python作为一种强大的编程语言,数据结构是怎样的呢?

一:数据结构分类

  1. 列表(list)
  2. 元组(tuple)
  3. 字典(dict)
  4. 集合(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中有四种不可变类型(数字,字符串,元组,不可变集合),如果对其重新赋值,则是新建了一个对象