2018/05/21

[生成器详解:廖雪峰的官方网站](https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000)

#No.1
杨辉三角-一个比较好理解的版本
def triangles():
b = [1]
while True:
yield b
b = [1] + [b[i] + b[i+1] for i in range(len(b)-1)] + [1]
n = 0
for t in triangles():
print(t)
n = n + 1
if n == 10:
break

知乎上一个比较好的解释:

作者:知乎用户

[链接:](https://www.zhihu.com/question/39256042/answer/94845655)

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

b = [1] + [b[i] + b[i+1] for i in range(len(b)-1)] + [1]

左右两边的[1]不解释了。我们看这个↓[b[i] + b[i+1] for i in range(len(b)-1)]

No.1
b = [1], len(b) => 1,
range(len(b)-1) => None 所以是空的,
加上前后的[1],b变成了[1,1] No.2
b = [1,1], len(b) => 2,
range(len(b)-1) => range(1) => (0)
=> 中间的列表生成了b[0] + b[1]这个元素,
其中b[0]是b列表的第一个元素即1,b[1]是b列表的第二个元素即1,
所以生成元素为1+1=2,由于range(1)=>(0),
只有一个元素,生成的list为[2],加上左右的[1],得到[1,2,1] No.3
b = [1,2,1], len(b) => 3,
range(len(b)-1) => range(2)
=> (0,1) => 中间的列表先生成了b[0] + b[1]这个元素,
其中b[0]是b列表的第一个元素即1,b[1]是b列表的第二个元素即2,
所以生成元素为1+2=3,列表然后生成了b[1] + b[2]这个元素,
其中b[1]是b列表的第二个元素即2,b[2]是b列表的第三个元素即1,
所以生成元素为2+1=3,
由于range(2)生成的是长度为2的元组,for完成了0和1两次循环后结束了,
所以生成的list为[3,3],加上左右的[1],得到[1,3,3,1]
resut:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]

【坚持】Selenium+Python学习之从读懂代码开始 DAY4的更多相关文章

  1. 【坚持】Selenium+Python学习之从读懂代码开始 DAY1

    学习Selenium+Python已经好几个月了,但越学发现不懂的东西越多. 感觉最大的问题还是在于基础不扎实,决定从头开始,每天坚持读代码,写代码. 相信量变一定能到质变!!! 2018/05/09 ...

  2. 【坚持】Selenium+Python学习之从读懂代码开始 DAY7

    2018/05/25 EC [EC](https://github.com/easonhan007/webdriver_guide/blob/master/34/expected_conditions ...

  3. 【坚持】Selenium+Python学习之从读懂代码开始 DAY6

    2018/05/23 Python内置的@property装饰器 [@property](https://www.programiz.com/python-programming/property) ...

  4. 【坚持】Selenium+Python学习之从读懂代码开始 DAY5

    2018/05/22 函数作为返回值 [来源:廖雪峰的官方网站](https://www.liaoxuefeng.com/) #No.1 def lazy_sum(*args): def sum(): ...

  5. 【坚持】Selenium+Python学习之从读懂代码开始 DAY3

    2018/05/15 [来源:菜鸟教程](http://www.runoob.com/python3/python3-examples.html) #No.1 list = [1, 2, 3, 4] ...

  6. 【坚持】Selenium+Python学习之从读懂代码开始 DAY2

    2018/05/10 [来源:菜鸟教程](http://www.runoob.com/python3/python3-examples.html) #No.1 # 二次方程式 ax**2 + bx + ...

  7. 软件测试自动化…python学习到什么程度?代码好不好学!

    软件测试自动化…python学习到什么程度?代码好不好学! 如下:

  8. Gradle学习系列之三——读懂Gradle语法

    在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

  9. selenium+python学习总结

    学习了一个月的selenium+python,终于学有所成,下面以一个简单的项目来总结学习所得. 1.         项目结构 在项目结构中,大家要注意到:每一个源文件夹中都要有一个__init__ ...

随机推荐

  1. 常见dos命令(win7下测试)

    按下组合键:win + R ,输入cmd进入Dos. 1.  cls :清屏命令. 2.  ver :查看系统版本号命令,winver弹出一个窗口显示更详细的系统版本号. 3.  dir  无参数 : ...

  2. python中pandas里面的dataframe数据的筛选小结

    pandas大家用的都很多,像我这种用的不够熟练,也不够多的就只能做做笔记,尽量留下点东西吧. 筛选行: a. 按照列的条件筛选 df = pandas.DataFrame(...) # suppos ...

  3. 20165318 2017-2018-2 《Java程序设计》第三周学习总结

    20165318 2017-2018-2 <Java程序设计>第三周学习总结 学习总结 我感觉从这一章开始,新的知识点扑面而来,很多定义都是之前没有接触过的,看书的时候难免有些晦涩.但由于 ...

  4. BZOJ4517:[SDOI2016]排列计数(组合数学,错排公式)

    Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是 ...

  5. Spring Boot中使用EhCache实现缓存支持

     SpringBoot提供数据缓存功能的支持,提供了一系列的自动化配置,使我们可以非常方便的使用缓存.,相信非常多人已经用过cache了.因为数据库的IO瓶颈.一般情况下我们都会引入非常多的缓存策略, ...

  6. ASP.NET Core读取appsettings.json配置文件信息

    1.在配置文件appsettings.json里新增AppSettings节点 { "Logging": { "LogLevel": { "Defau ...

  7. Sequelize-nodejs-9-Scopes

    Scopes作用域 Scoping allows you to define commonly used queries that you can easily use later. Scopes c ...

  8. 文件操作示例脚本 tcl

    linux 下,经常会对用到文件操作,下面是一个用 tcl 写的文件操作示例脚本: 其中 set f01 [open "fix.tcl" w] 命令表示 打开或者新建一个文件“fi ...

  9. python js 处理弹窗图片

    内置函数 : driver.execute_script() 2.自定义弹窗 由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用Selenium自带的方法就驾驭不了了,此时就要搬出JS大 ...

  10. openvpn 上外网

    Openvpn-2.2.2 实施记录 最终现象: Linux路由: [root@iZrj961wb7816wke73ql7qZ openvpm]# route -n Kernel IP routing ...