分享

把工作中遇到的一些坑和一些小技巧,汇总出来分享给大家(三)

 文明世界拼图 2020-02-16

中国加油! 没有一个春天不会到来!向那些逆行者们致敬!

把工作中遇到的一些坑和一些小技巧,汇总出来分享给大家(三)

向那些逆行者们致敬!

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('我们是警察,你已经被包围了,赶紧出来投降!!!!!')

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多