中国加油! 没有一个春天不会到来!向那些逆行者们致敬!
向那些逆行者们致敬! 1. python中的数据结构python中的有四种数据结构: 列表(list) ,元组,字典,集合
1.1 列表(list)特点: - 列表中的每一个元素都是可变的
- 列表中的元素都是有序的,也就是每个元素都有自己的位置
- 列表中可以容纳python中所的数据类型
#列表添加> list1=[1,3]> list1.insert(1,2) # list1=[1,2,3] insert()函数第一个参数是插入的位置# 也可以使用extend()进行批量添加#列表删除> list1.remove(1) # [2,3]#列表修改可以通过索引来直接修改> list1[0]='test' #['test', 3]#可以使用del 删除list列表>>> del list1[0]>>> list1[3]# 列表查找,和str的分片相似,可以使用索引来查找>>> list1[0:2][3]>>>
1.2 字典(dictionary)python中的字典,以key:value的形式显示,以大括号包含
特点 - 字典中的数据是以键值对出现的
- 理论上字典里的key是不可以,而值是可以重复的
- 字典中的key是不可变的 ,也就是无法修改的,而值是可变可修改的,可以是任意对象
- 字典是不可以切片搜索的
#添加update() 如果有值则进行更新,没有则进行添加>>> dirs={'name':'lnssm','age':18}>>> dirs.update({'name':'test'})>>> dirs{'name': 'test', 'age': 18}>>> dirs.update({'test':'123'})>>> dirs{'name': 'test', 'age': 18, 'test': '123'}# 也可以使用这种方式进行向元素里添加值dirs['testa']='testa'#使用del 进行删除>>> del dirs['test2']>>> dirs{'name': 'test', 'age': 18, 'test': '123'}
1.3 元组(tuple)特点: 元组是不可以修改的,基于的操作和list一样 1.4 集合 set特点: - 集合里的元素是无序的
- 集合里的元素是不会重复的
- 集合是不能被切片和索引的
# 集合里的添加>>> set1{1, 2, 3}>>> set1.add(4)>>> set1{1, 2, 3, 4}# 集合里的删除>>> set1.discard(1)>>> set1{2, 3, 4}>>>
1.5 来个彩蛋吧#使用sorted()进行排序>> list1=[1,3,2,4,5,3]>>> list2=sorted(list1)>>> list2[1, 2, 3, 3, 4, 5]# reverse 参数如果为True,则表示进行倒叙>>> list2=sorted(list1,reverse=True)>>> list2[5, 4, 3, 3, 2, 1]
- 如果有多个列表需要同时进行操作,有木有简单方法 zip()函数了解一下>>> for a,b in zip(list1,list2):
print('{} + {} = {}'.format(a,b,a+b)) 1 + 5 = 6 3 + 4 = 7 2 + 3 = 5 4 + 3 = 7 5 + 2 = 7 3 + 1 = 4 是不是很方便
- python运行并不快,我们可以使用推导式,来进行编写#普通的写法
a=[] for i in range(1,11): a.append(i) #牛x的写法 a=[i for i in range(1,11)] 推荐这样写 这样写法,在耗时上要比较小些
- 对于列表,我想把索引在循环的时候也要显示,要如何做呢 enumerate()参数可以帮你实现#enumerate(): 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
> list2=['a','b','c','d'] > for key,value in enumerate(list2): print('key为:',key,'value值为',value) 0 a 1 b 2 c 3 d
- 查看python内建函数列表,可以使用 dir(__builtins__)
- lambda 表达式,说白了就是匿名函数,主要用在filter,reduce(在最新的python中已经不是内置函数了,需要从functools模块里引入),map等函数里使用比较方便,当然更多时候用if就可以搞定了(这几个函数很有用,)>>> list2=[1,23,45,6,78,56]
# filter用法 >>> for i in filter(lambda x:x%3==0,list2): print(i) # map用法 for i in map(lambda x:x*2+10,list2): print(i) 12 56 100 22 166 122 #reduce() > from functools import reduce >>> print(reduce(lambda x,y:x+y,list2)) 209
一个小例子,调用window系统api 实现文本与语音的转化 # 先安装pywin32 这个包 pip install pywin32 程序如下: import win32com.client #系统客户端包 speaker=win32com.client.Dispatch("SAPI.SPVOICE") #系统接口 speaker.Speak('我们是警察,你已经被包围了,赶紧出来投降!!!!!')
|