廖雪峰python学习笔记之高级特性

写在前面

寒假时本科舍友的一句话点醒梦中人-你的python基础还没弄明白吧!猛地一想好像确实如此,还停留在随插随用的程度,并且对于迭代器,函数式编程等等,没有深刻理解,所以项目做起来也是空中楼阁,所以开学前的两个月,我挑重点,看完了《Python Cookbook》,书还不错,但是太难了,尤其对我这种新手,所以还想通过廖老师的网站进行知识的细化,所以才有了这个系列的博文。时隔多月再次开始写博客的时候,我决定放弃,之前照抄照搬的模式,自己理解,吸收之后在进行总结式的复习,争取有所进步!


高级特性之切片

切片不仅适用于list,还适用于tuple和string。
切片可以减少许多不必要的循环

练习:利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法

# 利用递归的思想
def trim(s):
    if s[:1] != ' ' and s[-1:] != ' ':
        return s

    elif s[:1] == ' ':
        return trim(s[1:])
    else:
        return trim(s[:-1])

高级特性之迭代

迭代这部分掌握的还可以,经常犯糊涂的地方在于字典的遍历总结如下

字典的三种迭代方式(默认方式是对key遍历)

  • key:for key in d
  • value:for value in d.values()
  • key,value同时遍历:for k,v in d.items()

enumerate支持同时对索引和元素遍历

高级特性之列表生成式

其目的在于以及其简洁的方式生成列表
牢记模版多进行练习即可,尝试多用

[x*x for x in range(1,11) if x % 2 == 0]

值得一提的是,列表生成式支持双重循环

[m+n for m in 'ABC' for n in 'XYZ']

高级特性之生成器

生成器的使用对我来说是一个难点,感觉一般也不会主动想起来去使用这个,所以先加深一下理解混个脸熟吧,嘻嘻

生成器(generator)是边循环边计算的一种机制,可以不必创建完整list,节省大量空间

创建方式

  • 生成器:将列表生成式的[]改为()
  • 生成器函数:函数定义重的包含的return改为yield

函数与生成器执行流程的区别:

  • 函数是顺序执行,遇到return语句或者最后一行函数语句就返回
  • 生成器在每次调用next()函数时执行,遇到yield语句返回,再次执行时从上一次返回的yield语句处继续执行

高级特性之迭代器

注意分清Iterable和Iterator即可

凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象

猜你喜欢

转载自blog.csdn.net/alicelmx/article/details/80260382
今日推荐