【CS61A 2024秋】Python入门课,全过程记录P3(Week5 Sequences开始,更新于2025/1/23)
文章目录
- 关于
- 基本介绍👋
- 新的问题
- Week5
- Mon Sequences
- 阅读材料
关于
个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。
江湖有缘相见🤝。如果读者想和我交个朋友可以加我好友(见主页or个人博客),共同学习。笔者是学生,课业还是比较繁重的,可能回复不及时。笔者也正在四处寻找一些可以兼职锻炼知识并且补贴一些生活的工作,如果读者需要一些详细的辅导,或者帮助完成一些简易的lab也可以找我,笔者还是学生,自以为才学有限,也没有高价的理由📖。
基本介绍👋
CS61A是加州大学伯克利分校(UC Berkeley)计算机科学专业的入门课程,全名为Structure and Interpretation of Computer Programs。
这是入门的Python课程,因此这篇博客会默认读者没有很多的编程背景,讲的东西会比较基础,有编程经验的读者可以快速浏览。
首先贴上课程网址。
CS61A课程主页
新的问题
可以发现,cs61a归档了,而这个网站是需要Berkeley账号的,还是没法登录。这时候笔者决定使用档案馆网站,去翻网页的归档了。虽然有点难受,但是还能用orz。
对了,textbook是可以直接访问的,在这里
Week5
Mon Sequences
阅读材料
首先,讲了range类型。
打开解释器是老师,原来python的for循环里常用的range也是一个类。可以强制转换为列表,是左闭右开的区间。
然后,ppt讲了一个叫列表推导式(List Comprehension)的语法现象,这个语法现象挺常见的,大量出现在python项目的代码当中。
[<map exp> for <name> in <iter exp> if <filter exp>]
Short version: [<map exp> for <name> in <iter exp>]
写法如上。
还是比较清晰的,所谓map exp就是要求的目标表达式,然后for后面给自变量x赋值。
然后给了一个例子
def promoted(s, f):
"""Return a list with the same elements as s, but with all
elements e for which f(e) is a true value placed first.
>>> promoted(range(10), odd) # odds in front
[1, 3, 5, 7, 9, 0, 2, 4, 6, 8]
"""
return [e for e in s if f(e)] + [e for e in s if not f(e)]
取出符合f的值放前面,不符合的放后面,python的list可以直接用+来拼接。
然后是一个21 rule,一个小小的博弈游戏。