Skip to content

Commit b3272c9

Browse files
authored
Merge pull request ictar#41 from ictar/pd_2
Pd 2
2 parents 501739a + b1bdc28 commit b3272c9

8 files changed

Lines changed: 858 additions & 577 deletions

Others/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,8 @@
102102

103103
- [我是如何构建一个Slack机器人来帮助我在San Francisco找房子的](./我是如何构建一个Slack机器人来帮助我在San Francisco找房子的.md)
104104

105-
我们将逐步看看每一块是如何构建的,以及如何使用这个最终的Slack机器人来帮助我们找到一间公寓。
105+
我们将逐步看看每一块是如何构建的,以及如何使用这个最终的Slack机器人来帮助我们找到一间公寓。
106+
107+
- [中断两个循环](./中断两个循环.md)
108+
109+
一个常见的问题是,我如何一次性跳出两个嵌套的循环?例如,如何我才能检查字符串中的字符对,然后在我找到一对相等的字符对时停止?

Others/中断两个循环.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
原文:[Breaking out of two loops](http://nedbatchelder.com/blog/201608/breaking_out_of_two_loops.html "Link to this post" )
2+
3+
---
4+
5+
一个常见的问题是,我如何一次性跳出两个嵌套的循环?例如,如何我才能检查字符串中的字符对,然后在我找到一对相等的字符对时停止?经典的方式是写两个嵌套循环,遍历该字符串的索引:
6+
7+
```python
8+
s = "a string to examine"
9+
for i in range(len(s)):
10+
for j in range(i+1, len(s)):
11+
if s[i] == s[j]:
12+
answer = (i, j)
13+
break # How to break twice???
14+
```
15+
16+
这里,我们使用两个循环来生成两个我们想要检查的索引。当我们找到正在寻找的条件时,我们想退出这两个循环。
17+
18+
有几个常见的答案。但我不大喜欢它们:
19+
20+
* 将循环放进一个函数中,然后在函数中返回以退出循环。这个答案不尽人意,因为循环也许是重构成新函数的一个自然而然的地方,另外,也许在循环中,你需要访问其他本地变量。
21+
* 抛出一个异常,然后在双循环的外部捕获它。这是把异常当成goto来用。这里并没有异常条件,你只是超距利用异常操作。
22+
* 使用布尔变量来标记循环结束,然后在外部循环检查该变量,从而执行第二次退出。这是一个低技术解决方案,可能适用于某些情况,但大多数只是带来额外的噪声和标记。
23+
24+
我的首选答案,也就是那个我在PyCon 2013演讲上提到的([Loop Like A Native](http://nedbatchelder.com/text/iter.html))那个,是把双循环变成单循环,然后只适用一个break。
25+
26+
这需要把多一点的工作放到循环里,但是,这对于抽象迭代是一个好的实践。这是Python非常擅长的一件事,但也非常容易把Python当成一个能力较差的语言来用,并且不利用现有的循环抽象。
27+
28+
让我们再来考虑这个问题。这真的是两个循环吗?在写任何代码之前,再听一听该英文描述:
29+
30+
> 如何我才能检查字符串中的字符对,然后在我找到一对相等的字符对时停止?(How can I examine pairs of characters in a string, stopping when I find an
31+
equal pair?)
32+
33+
在该描述中,我并未听到两个循环。是一个字符对上的单循环。因此,让我们这样写:
34+
35+
```python
36+
def unique_pairs(n):
37+
"""Produce pairs of indexes in range(n)"""
38+
for i in range(n):
39+
for j in range(i+1, n):
40+
yield i, j
41+
42+
s = "a string to examine"
43+
for i, j in unique_pairs(len(s)):
44+
if s[i] == s[j]:
45+
answer = (i, j)
46+
break
47+
```
48+
49+
这里,我们写了一个生成器来生成所需的索引对。现在,我们的循环是在字符对之上的单循环,而不是通过索引的双循环。仍然有双循环,但是抽取到unique_pairs生成器中。
50+
51+
这让我们的代码漂亮地匹配了我们的话。注意,我们无需写两遍len(s),这是原始代码需要重构的另一个迹象。如果在其他地方,我们发现我们想要像这样进行迭代,那么可以重用unique_pairs生成器,虽然,可重用不是写一个函数的必备条件。
52+
53+
我知道这种技术似乎是外来的。但它确实是最好的解决方案。如果你还是觉得被绑在双循环上,那么多想想你是如何想像你的程序的结构的。不管你相信与否,你正在试图一次打破两个循环,这意味着,在某种意义上,它们是一回事,而不是两个。将第二个隐藏到一个生成器中,你就可以以实际上认为的那样来重构你的代码。
54+
55+
Python有用于抽象的强大的工具,其中包括生成器和其他用于抽象迭代的技术。如果你想要了解更多的话,我的[Loop Like A Native](http://nedbatchelder.com/text/iter.html)演讲有更多详细信息(和一个令人震惊的笑话)。
56+
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
原文:[Python Weekly Issue 256](http://us2.campaign-archive1.com/?u=e2e180baf855ac797ef407fc7&id=3dc51d49d9&e=148158c7b4)
2+
3+
---
4+
5+
欢迎来到Python周刊第256期。本周,我想要谢谢我们的赞助商Springboard的支持。一定要看看他们超棒的产品。
6+
7+
8+
# 来自赞助商
9+
10+
[![](https://gallery.mailchimp.com/e2e180baf855ac797ef407fc7/images/2ca978ea-9b96-4142-9e43-c7da1716f054.png)](https://www.springboard.com/workshops/data-science-intensive?utm_medium=spnewsletter&utm_campaign=11Aug16&utm_source=pyweekly)
11+
12+
想要带着你的**Python**技能闯入数据科学吗?和个人导师在线学习吧,构建真实世界的数据科学项目,并开始参与Kaggle比赛。与那些具有统计数据和编程背景的人完美配合。[现在就注册!](https://www.springboard.com/workshops/data-science-intensive?utm_medium=spnewsletter&utm_campaign=11Aug16&utm_source=pyweekly)
13+
14+
15+
# 新闻
16+
17+
[PyPy项目获得来自Mozilla的$200,000](https://blog.mozilla.org/blog/2016/08/04/mozilla-awards-585000-to-nine-open-source-projects-in-q2-2016/)
18+
19+
[PEP 526 -- 变量声明语法](https://www.python.org/dev/peps/pep-0526/)
20+
21+
22+
# 文章,教程和讲座
23+
24+
[Episode #70: 在Loudr的Pythonic翻唱歌曲](https://talkpython.fm/episodes/show/70/pythonic-cover-songs-at-loudr)
25+
26+
一些最好的歌曲都是流行音乐的翻唱歌曲。如果你是想要创造一个翻唱歌曲,并且实际上把它卖出去的音乐家的话,那么你会陷入与唱片公司的复杂协议和法律协议。听起来好像并不好玩。但是,这就是Python来救场的地方了!Loudr的汉子和妹子们使用Python来创建用于创建,销售和分发翻唱歌曲的服务。这一周,你会见到其中一个共同创始人,Josh Whelchel。在这里,他告诉我们Python的使这成为可能的所有很酷的方法,包括触摸机器学习!
27+
28+
[如何在Python中为Keras深度学习模型使用网格搜索超参数](http://machinelearningmastery.com/grid-search-hyperparameters-deep-learning-models-python-keras/)
29+
30+
在这篇文章中,你会发现可以如何使用scikit-learn Python机器学习库中的网格搜索功能来调Keras深度学习模型的超参数。
31+
32+
[设计Pythonic API](http://noamelf.com/2016/08/05/designing-pythonic-apis/)
33+
34+
当编写一个包(库)的时候,为它提供一个良好的API,几乎与它的功能本身一样重要(好吧,至少你想要让别人使用),但怎么才算一个良好的API呢?在这篇文章中,我将尝试通过比较Requests和Urllib(Python标准库的一部分)在一些经典的HTTP场景的使用,从而提供关于这个问题的一些见解,并看看为什么Requests已经成为了Python用户中的事实上的标准。
35+
36+
[TFLearn - 快速启动](https://github.com/tflearn/tflearn/blob/master/tutorials/intro/quickstart.md)
37+
38+
在本教程中,你将学习利用泰坦尼克号上的乘客的个人信息(例如性别、年龄等等……),使用TFLearn和TensorFlow来估计他们在沉没中幸存的机会。为了解决这个经典的机器学习任务,我们将构建一个深层神经网络分类器。
39+
40+
[在NFL中存活 - 使用Python进行生存分析](http://savvastjortjoglou.com/nfl-survival-analysis-kaplan-meier.html)
41+
42+
生存分析是用来研究时间,直到感兴趣的某些事件(通常被称为死亡)发生。时间可以按年,月,周,日等进行测定。事件可以是任何感兴趣的东西。可能是实际的死亡、诞生,Pokemon Go服务器崩溃,等等。在这篇文章中,我们感兴趣的是联盟中的选秀NFL球员的时间,所以感兴趣的事件将是选秀NFL球员的退役。导致感兴趣的事件的持续时间可以被称为存活时间。在我们的例子中,存活时间是一个球员在联盟中活跃的年数。
43+
44+
[随着你的应用越来越大,你应该知道的关于Django Admin的一些事](https://medium.com/@hakibenita/things-you-must-know-about-django-admin-as-your-app-gets-bigger-6be0b0ee9614)
45+
46+
本文分享了随着应用规模和复杂度的增长,我们在项目中使用的一些让Django Admin表现良好的简单技术。
47+
48+
[Podcast.__init__ 第69集 - 与Peter McCormick和Francis Deslauriers聊聊PyCon Canada](http://pythonpodcast.com/pycon-canada.html)
49+
50+
除了诸如PyCon US和EuroPyCon这样的国际Python会议,还有一些区域会议,它们在一个较小的范围内运作,为当地社区提供服务。本周,我们采访了Peter McCormick和Francis Deslauriers关于他们组织PyCon Canada,从而为加拿大人提供一个场所聊聊如何使用该语言(Python)的工作。如果十一月份的时候,你恰好在Toronto附加,那么你应该买张票,为他们的成功添一份力!
51+
52+
[使用TensorFlow中的深度学习进行图像修复](http://bamos.github.io/2016/08/09/deep-completion/)
53+
54+
[Requests vs. urllib:它解决了什么问题?](http://www.curiousefficiency.org/posts/2016/08/what-problem-does-it-solve.html)
55+
56+
[EuroPython 2016年视频集](https://www.youtube.com/playlist?list=PL8uoeex94UhE3FDvjacSlHFffoNEoPzzm)
57+
58+
[一起构建一个简单的解释器。第10部分。](https://ruslanspivak.com/lsbasi-part10/)
59+
60+
[使用机器学习模型进行长期预测](http://thuijskens.github.io/2016/08/03/time-series-forecasting/)
61+
62+
[使用Python和Keras进行ImageNet分类](http://www.pyimagesearch.com/2016/08/10/imagenet-classification-with-python-and-keras/)
63+
64+
65+
# 本周Python工作
66+
67+
[Delivery Hero招聘Python工程师](http://jobs.pythonweekly.com/jobs/senior-software-engineer-mf/)
68+
69+
Delivery Hero Family目前每天提供100万份左右的饭菜。我们希望每天能够提供500万份,接着更进一步,5000万份。这是一项艰巨的任务,因此我们正在寻找开放、积极、热情的Python工程师加入我们的团队。
70+
71+
[Aeguana招聘后端开发](http://jobs.pythonweekly.com/jobs/mid-weight-backend-developer-pythondjangoc/)
72+
73+
Aeguana是一家领先的产品开发公司,专门从事体验式营销活动的创新设计,并且在独特和前沿的自动售货机设计开发上处于领先地位。你将作为一个由以为每个客户提供定制突破性的产品引以为豪,并且将具有挑战性概念付诸于实现的工程师和创新者组成的高度熟练的团队的一部分。
74+
75+
76+
# 好玩的项目,工具和库
77+
78+
[uArm Creator studio](https://github.com/apockill/uArmCreatorStudio)
79+
80+
uArm Creator Studio是一个用于机器人臂的可视化编程语言,着重点在于计算机视觉,以及对没啥经验和经验丰富的程序员的可用性。它完全用Python编写,支持应用中的Python脚本编写。
81+
82+
[asyncpg](https://github.com/magicstack/asyncpg)
83+
84+
一个用于Python/asyncio的快速的PostgreSQL数据库客户端库。
85+
86+
[omnihash](https://github.com/Miserlou/omnihash)
87+
88+
一个使用多种常见哈希算法来哈希字符串、文件和网络资源的小小的工具。
89+
90+
[fasttext](https://github.com/pyk/fastText.py)
91+
92+
用于Facebook fastText的Python接口。
93+
94+
[pytracking](https://github.com/resulto-admin/pytracking)
95+
96+
该库提供了一组在发送电子邮件时提供打开和点击跟踪的函数。当你依赖诸如Amazon SES或者PostmarkApp这些不提供打开和点击跟踪的邮件服务提供商(ESP)时,它尤其有用。
97+
98+
[nbviewer.js](https://github.com/kokes/nbviewer.js)
99+
100+
在浏览器中直接渲染Jupyter notebooks,而无需后端转换器。可以作为一个库使用。
101+
102+
[metame](https://github.com/a0rtega/metame)
103+
104+
metame是用于任意可执行文件的变形代码引擎。
105+
106+
[django_uncertainty](https://github.com/abarto/django_uncertainty)
107+
108+
一个Django中间件,用以生成网站上可预见的错误。
109+
110+
111+
# 最新发布
112+
113+
[MicroPython 1.8.3](https://github.com/micropython/micropython/releases/tag/v1.8.3)
114+
115+
这个版本为其核心、扩展模块和ESP8266端口带来了各种改进和补充,以及对文档进行了增强。现在,gc模块中有一个"threshold"函数,用户可以用其配置垃圾收集器,使其并平时更早运行,以便帮助减少堆碎片。btree模块现已在ESP8266端口可用,还有一个改善的WebREPL文件传输:现在,获取文件是非阻塞的了(这个修改需要对客户端软件进行更新)。
116+
117+
118+
# 近期活动和网络研讨会
119+
120+
[PyHou 2016年八月聚会 - Houston, TX](https://www.meetup.com/python-14/events/226999486/)
121+
122+
使用Python和AWS Lambda,就可以容易的构建一个可扩展的应用,而无需进行任何繁琐的服务器管理!我们将涵盖设计和开发一个使用AWS Lambda的应用的基础知识,包括测试、部署和定价。
123+
124+
[PyWeek 22挑战赛](https://pyweek.org/22/)
125+

Python Weekly/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@
1414
- [Issue 252](./Python Weekly Issue 252.md)
1515
- [Issue 253](./Python Weekly Issue 253.md)
1616
- [Issue 254](./Python Weekly Issue 254.md)
17-
- [Issue 255](./Python Weekly Issue 255.md)
17+
- [Issue 255](./Python Weekly Issue 255.md)
18+
- [Issue 256](./Python Weekly Issue 256.md)

0 commit comments

Comments
 (0)