bobo老师
重要数据类型
列表数据类型
-
列表的创建方式
-
创建一个列表,只要把逗号分隔的不同的数据元素使用方括号括起来即可。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。
-
alist = [1,2,3,4,5] items = [1,'haohao',12.34] #列表中可以存储任意类型的数据
-
-
列表元素:
- 存储在列表数据结构中的每一个数据被称为列表元素,简称元素。
-
访问列表内的元素
-
列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一。要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的 索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是len(list)-1。
-
alist = [1,12.3,'bobo'] print(alist[2]) #'bobo' print(alist[0:2]) #[1, 12] print(alist[6]) #使用索引和切片的时候,不可以访问超出索引范围的元素
-
-
修改元素的值
-
直接对元素进行重新赋值
-
alist = [1,12.3,'bobo'] alist[1] = 100.123 print(alist)
-
-
删除元素
-
使用del语句或者remove(),pop()方法删除指定的元素。
-
alist = [1,12.3,'bobo'] # del alist[0] #删除下标为0的列表元素 # alist.remove('bobo') #删除列表中bobo这个列表元素 # alist.pop() #默认情况下pop会把列表中最后一个元素删除 alist.pop(2) #将列表中下标为2的元素进行删除 print(alist)
-
-
切片
-
切片指的是对序列进行截取,选取序列中的某一段。
-
切片的语法是: list[start:end]
-
#同字符串的切片机制一样 alist = [1,12.3,'bobo','jay','hello'] print(alist[:-1])
-
-
以冒号分割索引,start代表起点索引,end代表结束点索引。省略start表示以0开始,省略end表示到列表的结尾。注意,区间是左闭右开的!也就是说[1:4]会截取列表的索引为1/2/3的3个元素,不会截取索引为4的元素。分片不会修改原有的列表,可以将结果保存到新的变量,因此切片也是一种安全操作,常被用来复制一个列表,例如newlist = lis[:]。
-
切片过程中还可以设置步长,以第二个冒号分割,例如list[3:9:2],表示每隔多少距离取一个元素。
-
-
列表的内置方法
-
alist = ['bobo',"18","99.5",'北京'] #将列表转换成字符串 ret = '-'.join(alist) #将列表中的每一个列表元素根据-为间隔进行拼接,返回字符串结果 print(ret) #如何将字符串转换成列表 s = 'hello-name-bobo-age' ret = s.split('-') print(ret) alist = [3,8,5,7,6,2,1] alist.sort() #对列表元素进行排序 print(alist) a = [1,2,3] a.append('bobo') #向列表尾部添加一个元素 print(a) a1 = [1,2,3] a1.insert(1,999) #向列表下标为1的位置添加一个元素 print(a1)
字典数据类型
字典数据类型
-
字典的实现机制:
- Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。
-
字典特性:
- 字典包含的元素个数不限,值的类型可以是任何数据类型!但是字典的key必须是不可变的对象,例如整数、字符串、bytes和元组,最常见的还是将字符串作为key。列表、字典、集合等就不可以作为key。同时,同一个字典内的key必须是唯一的,但值则不必。
- 注意:从Python3.6开始,字典是有序的!它将保持元素插入时的先后顺序!请务必清楚!
-
创建字典
-
字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,例如:
- d = {key1 : value1, key2 : value2 }
-
#键值对:key : value #key:只能使用不可变类型的数据充当,通常使用字符串 #value:任意数据类型的值充当 #字典中无法存储重复的键值对 dict_1 = {'name':'bobo','age':18,'score':100,'age':18} #注意:不要在字段中存储相同的key,value可以相同 dict_2 = {'name':'bobo','age':18,'age':20} print(dict_2)
-
-
访问字典
-
虽然现在的字典在访问时有序了,但字典依然是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。但与list类似的地方是,字典采用把相应的键放入方括号内获取对应值的方式取值。
-
d = {'name':'bobo','age':20,"scores":[100,120,99]} #根据key访问对应的value值 print(d['name'],d['scores']) #依次访问name和scores对应的value值 print(d.get('name')) #通过get使用对应的key访问对应的value值 #注意:使用[]访问不存在的key对应的value值程序会报错 # print(d['adress']) #程序报错 #注意:使用get访问不存在的key程序不会报错,但是会返回None这个空值 print(d.get('address'))
-
get访问:
dic = {'name':'bobo','age':20,"scores":[100,120,99]} #2种字典元素访问的方式 print(dic['name']) # print(dic['address']) #key不存在则报错 print(dic.get('address')) #key不存在则返回None
-
-
添加和修改
- 增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个key只能对应一个值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。
d = {'name':'bobo','age':20,"scores":[100,120,99]} d['name'] = 'jay' #给存在的key修改对应的value值 d['address'] = 'Beijing' #给一个不存在的key赋值表示新增键值对 del d['age'] #删除age键值对 print(d)
-
删除字典元素、清空字典和删除字典
- 使用del关键字删除字典元素或者字典本身,使用字典的clear()方法清空字典。
d = {'name':'bobo','age':20,"scores":[100,120,99],'name':'bobo'}
del d['name']
print(d)
d = {'name':'bobo','age':20,"scores":[100,120,99],'name':'bobo'}
del d
print(d)
d = {'name':'bobo','age':20,"scores":[100,120,99],'name':'bobo'}
d.clear()
print(d)
- 字典的重要方法
d = {'name':'bobo','age':20,"scores":[100,120,99]}
print('name' in d) #查看name是否存在于d字典的keys中
print(d.keys()) #返回字典中所有的key
print(d.values()) #返回字典中所有的value
print(d.items()) #返回字典中所有的键值对