python的4种数据结构

——学习笔记

  • 列表list
  • 字典dict
  • 元组tuple
  • 集合set

list = [val1,val2,val3,val4] dict = {key1:val1,key2:val2} tuple = (val1,val2,val3,val4) set = {val1,val2,val3,val4}

列表

列表的特征

  1. 列表中的每一个元素是可变的
  2. 列表中的元素是有序的,也就是说每一个元素都有一个位置
  3. 列表可以容纳Python的任何对象

列表元素可变,即可以在列表中增删改查元素
weekday=['monday','tuesday','wednesday'] print(weekday[0]) 列表可以装python的所有对象,例子
all_in_list =[ 1, #整数 1.0, #浮点数 'a word', #字符串 print(1), #函数 True, #布尔值 [1,2], #列表中套列表 (1,2), #元组 {'key':'value'} #字典 ]

列表的增删改查

插入

fruit = ['pineapple','pear'] fruit.insert(1,'grape')fruit[0:0] = ['orange']

删除

fruit.remove('pear')del a[0:2]

修改

fruit[0] = 'grapefruit'

查询

elements = ['h','he','li','be','b','c','n','o,'f','ne'] print(elements[0]) print(elements[-2]) print(elements[0:3]) print(elements[-10:-7]) print(elements[-10:]) print(elements[:9])print(elements['h']) #错误列表直接说位置索引如果数据量很大的话,肯定会记不住什么元素在什么位置,那么有没有一种数据类型可以用人类的方式进行索引呢?于是字典出现了

字典

字典的特征

1.字典中数据必须以键值对的形式出现
2.逻辑上,键是不能重复的,值可以重复
3.字典中的键(key)是不可变的,也就是无法修改的;而值(value)是可变的,可以修改,可以使任何对象
code = { 'bidu':'baidu', 'sina':'sina' }code = { 'bidu': } 错误:键和值不能脱离对方而存在
code = { []:'a test' } 错误:将一个可变的元素作为Key来构建字典
code = { 'bidu':123, 'bidu':123 } 错误:键不能重复

字典的增删改查

增加

code = { 'bidu':'baidu', 'sina':'sina' } 与列表不同的是,字典并没有一个可以往里面增加单一元素的“方法”,但可以通过以下方式进行添加:
code['weixin':'weixin'] 列表中用来添加多个元素的方法extend(),在字典中添加多个元素的方法update()
code.update({'fb':'facebook','tsla':'tesla'})

删除

del code['fb']

修改

code['fb':'fb']

查询

code['tsla'] #字典是通过键来索引值

  • 注意:字典是不能够切片的,因此chart[1:4]是错误的*

元组

元组是一个稳固版的列表,因为元组不可修改,增删改不存在,可以查询
letters = ('a','b','c') letter[0]

集合

集合则更接近数学上集合的概念。集合中的元素是无序的,不重复的任意对象,可以通过集合去判断数据的从属关系,还可以通过集合把数据结构中重复的元素删除

集合的增删改查

增加

a_set = {1,2,3,4} a_set.add(5)a_set.update([5,6,7,8])

删除

a_set.discard(5)a_set.remove(6) #如果要删除的元素在集合中不存在,则出错

修改

a_set ={a,g,c,d} a_set={'abckde'} a_set={"abkc"} #注意:这里是只有一个元素

查询

a_set

差集、交集、合集

a = set('abc') b = set('cdef')

差集

a-b 输出是set(['a','b'])
b-a 输出是set(['d','e','f'])

交集

a & b 输出是set(['c'])

合集

a | b 输出是set(['a','b',d','e','f'])