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}
列表
列表的特征
- 列表中的每一个元素是可变的
- 列表中的元素是有序的,也就是说每一个元素都有一个位置
- 列表可以容纳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'])