周报-19|武功山看日出、Python初学建议
前言
本篇是对 2023-05-08
到 2023-05-14
这周生活的记录与思考。首发在我的个人 博客,你可以移步了解更多或者给我留言。
本周继续学习 python,发现一个质量非常高的 python 学习网站 Real Python,该网站有学习 python 的一些教程,是收费的,部分章节是可以免费观看的。
另外,周五晚上老婆临时起意想去武功山看日出,于是立即规划行程并购买火车票。因为一年半之前,我去过一次,所以规划起来还是很轻松的。上一次去是国庆节碰到下雨,没有看到日出。幸运的是,这次是晴天,不仅看到了日落还看到了日出。这一次没有选择住帐篷,而是住在了云中雾客栈,没想到这个客栈离金顶需要 40 分钟左右的路程,而且有段路程是坑坑洼洼。
去武功山之前,先去了长沙,再次游了橘子洲头,并第一次在长沙跑步打卡。本想在萍乡也跑步打卡,奈何没有得逞。
这次去了长沙和武功山,下次基本上是再也不会去爬武功山了。长沙还会去,因为从武功山回来路上,就和老婆规划着什么时候去张家界。
武功山看日出
理财
这周总计支出 1784 元,明细如下:
- 5 月 8 日:12 元
- 5 月 9 日:18 元
- 5 月 10 日:200 元
- 5 月 11 日:12 元
- 5 月 12 日:445 元
- 5 月 13 日:662 元
- 5 月 14 日:435 元
因为周末出去旅游,所以本周支出有所增多。
健身
本周跑步 56 公里,最长跑步距离为 13 公里。
明细数据如下:
周末出去旅游,路过长沙,在长沙跑了两天,累计跑了 6 公里。这样,我的跑步数据 从 2 年里我跑过 1 个省份 1 个城市
变成了 2 年里我跑过 2 个省份 2 个城市
。
工作
Java
博客
本周完成两篇博客
Python
Python 初学建议
1、新手如何学习 python?
推荐几篇文章:
2、学习 python 编程的 11 个建议
原文:11 Beginner Tips for Learning Python Programming,总结出以下 11 条新手编程建议:
提示 #1:每天编写代码
提示#2:写出来
提示#3:互动
提示#4:休息
提示#5:成为漏洞赏金猎人
提示#6:与正在学习的其他人在一起
技巧#7:教导
技巧#8:结对编程
提示#9:提出“好的”问题
技巧#10:构建一些东西
技巧#11:为开源做贡献
3、Pyhton 播客: Ep 01. 新人到底需要什么
播客中提到的内容:
- Tech lead
- starlette
- Python’s super() considered super!
- huey
- apscheduler
- Python 3: ten years later - PyCon 2018
- David Beazley - Python Concurrency From the Ground Up: LIVE! - PyCon 2015
- pyflame
- 提问的智慧
- XY 问题
- Python Logger
- pdb
- PyCharm
- Jupyter notebook
- Let me google that, let me google that for you
- 学习操作系统的知识,看哪本书好?
- PHP 黑系列之二:PHP 为什么函数命名是如此不一致?
- Scheme
- The Little Schemer
- SICP
- CS 61A: Structure and Interpretation of Computer Programs
Python Tips
本周订阅了 Real Python 的 Python Tricks,收到两封邮件,分享如下:
1、如何一行代码合并两个字典
# How to merge two dictionaries
# in Python 3.5+
>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 3, 'c': 4}
>>> z = {**x, **y}
>>> z
{'c': 4, 'a': 1, 'b': 3}
# In Python 2.x you could
# use this:
>>> z = dict(x, **y)
>>> z
{'a': 1, 'c': 4, 'b': 3}
# In these examples, Python merges dictionary keys
# in the order listed in the expression, overwriting
# duplicates from left to right.
#
# See: https://www.youtube.com/watch?v=Duexw08KaC8
说明:
这段代码用于将两个字典
x
和y
合并成一个新字典z
,其中**
是 Python 中的解包运算符,可以将一个字典拆分成多个键值对,然后将这些键值对作为参数传递给一个函数或用于创建一个新的字典。在这个例子中,
{**x, **y}
表示将字典x
和y
拆分成多个键值对,然后将这些键值对合并成一个新字典。由于字典y
中的键b
与字典x
中的键b
相同,因此在合并后的字典中,键b
对应的值将被更新为字典y
中的值(即3
)。
除了上面的方法之外,还可以使用 update()
方法
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
z = x.copy()
z.update(y)
在上面的代码中,首先将字典
x
复制一份到z
中,然后使用update()
方法将字典y
合并到z
中。如果字典y
中的键在字典x
中已经存在,则会使用字典y
中的值来更新字典z
中的值。最终得到一个新字典z
,它包含了字典x
和y
中的所有键值对。
2、在 Python 中一次测试多个标志的不同方法
# Different ways to test multiple
# flags at once in Python
x, y, z = 0, 1, 0
if x == 1 or y == 1 or z == 1:
print('passed')
if 1 in (x, y, z):
print('passed')
# These only test for truthiness:
if x or y or z:
print('passed')
if any((x, y, z)):
print('passed')
除了前面提到的四种方法外,还有其他几种方式来测试多个变量是否至少有一个等于某个值:
- 使用列表解析式
x, y, z = 0, 1, 0
if any([i == 1 for i in (x, y, z)]):
print('passed')
在上面的代码中,使用列表解析式生成一个新列表,其中包含变量
x
、y
、z
中每个变量是否等于 1 的布尔值。然后,使用any()
函数来测试新列表中是否存在至少一个为真的元素,如果存在,则条件为真,执行print()
语句。
- 使用
sum()
函数
x, y, z = 0, 1, 0
if sum((i == 1 for i in (x, y, z))):
print('passed')
在上面的代码中,使用生成器表达式生成一个新的迭代器对象,其中包含变量
x
、y
、z
中每个变量是否等于 1 的布尔值。然后,将迭代器对象传递给sum()
函数,它会将所有为真的元素加起来并返回一个整数。如果返回的整数大于 0,则条件为真,执行print()
语句。
- 使用
map()
函数和any()
函数
x, y, z = 0, 1, 0
if any(map(lambda i: i == 1, (x, y, z))):
print('passed')
在上面的代码中,使用
map()
函数将一个匿名函数lambda i: i == 1
应用于变量x
、y
、z
中的每个元素,它会将每个元素与 1 进行比较并返回一个布尔值。然后,使用any()
函数来测试返回的布尔值序列中是否存在至少一个为真的元素,如果存在,则条件为真,执行print()
语句。
- 使用
reduce()
方法
from functools import reduce
x, y, z = 0, 1, 0
if reduce(lambda a, b: a or b, (i == 1 for i in (x, y, z))):
print('passed')
在上面的代码中,使用生成器表达式生成一个新的迭代器对象,其中包含变量
x
、y
、z
中每个变量是否等于 1 的布尔值。然后,使用reduce()
函数将一个匿名函数lambda a, b: a or b
应用于迭代器对象中的所有元素,它会将所有元素按照布尔逻辑or
进行聚合,并返回一个布尔值。如果返回的布尔值为真,则条件为真,执行print()
语句。
本周分享
大部分有意思的内容会分享在 『ChenSoul Share』Telegram 频道或者我的 memos 中。我写了一个 python 脚本从 memos 读取最近一周的 memos 记录。
- 2023-05-10 一些非常有趣的 python 爬虫例子,对新手比较友好,主要爬取淘宝、天猫、微信、微信读书、豆瓣、QQ 等网站。查看链接
#memos
#python
#tool
- 2023-05-08 这个网站整理了开发者的学习成长路线图,有比较详细的技能树,推荐学习内容等等,偏向开发者。 查看链接
#memos
#tool
以上。
Related content
- 2023-12-28|今天做了什么
- 2023-12-27|今天做了什么
- 2023-12-22|今天做了什么
- 2023-12-21|Spring Security对OAuth2的支持及实现方式
- 2023-12-20|Maven配置继承和生命周期、源码运行Nacos 2.3.0控制台
- 2023-12-19|Spring Security OAuth2配置JWT、Github Actions配置代码扫描
- 2023-12-18|使用Spring Security实现OAuth2授权和认证
- 2023-12-15|JNDI InitialContext源码分析、ClassLoader加载机制
- 2023-12-14|购买新的VPS服务器、最近在做什么
- 2023-12-13|发布到Maven中央仓库的第一个项目