2019-02-02 Python学习——生成器杨辉三角,迭代器与可迭代对象的区别
练习
杨辉三角定义如下:
     	  1
   		 / \
 	    1   1
  	   / \ / \
 	  1   2   1
	 / \ / \ / \
	1   3   3   1
   / \ / \ / \ / \
  1   4   6   4   1
 / \ / \ / \ / \ / \
1   5   10  10  5   1
把每一行看做一个list,试写一个generator,不断输出下一行的list:
def triangles():
    list = [1]
    while list:
        yield list
        newlist = list.copy()#进行一次深复制
        for i in range(len(list)+1):
            if(i==0):
                pass
            elif(i==len(list)):
                newlist.append(1)
            elif(i!=0 and i!=len(list)):
                newlist[i] = list[i] + list[i-1]
        list = newlist.copy()
廖雪峰网站上的题目,贴一下自己的
网上更简单的
def triangles():
    list = [1]
    while True:
        yield list
        list = [list[i]+list[i+1] for i in range(len(list)-1)]
        list.insert(0,1)
        list.append(1)
insert没有想到哎
迭代器和可迭代对象
from collections import Iterable
from collections import Iterator
isinstance( , Iterable) #用于判断是否为可迭代对象
isinstance( , Iterator) #用于判断是否为迭代器
总结
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
(来自廖雪峰官网)
就酱
2019-02-02 Python学习——生成器杨辉三角,迭代器与可迭代对象的区别的更多相关文章
- 用Python输出一个杨辉三角的例子
		用Python输出一个杨辉三角的例子 这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维 ... 
- 使用Python实现的杨辉三角
		def triangel(): print ' '*(20*3)+str(1) #定义起始两行 print ' '*(19*3)+str(1)+' '*5+str(1) for i in range( ... 
- Python学习笔记(4):容器、迭代对象、迭代器、生成器、生成器表达式
		在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ... 
- python学习Day14  带参装饰器、可迭代对象、迭代器对象、for 迭代器工作原理、枚举对象、生成器
		复习 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.返回内部函数对象----> 延迟执行, 开放封闭原则: 功能可以拓展,但源代 ... 
- Python 中 Iterator(迭代器)和Iterable(迭代对象)的区别
		直接可以用作for循环的数据类型有以下几种: tuple.list.dict.str等, 上述数据类型可以用作for循环的叫做可迭代对象Iterable.可以使用isinstance判断一个对象是否是 ... 
- Python简单实现杨辉三角
		n=input("请输入要打印的行数")n=int(n)for x in range(0,n+1): p=1 print(''.rjust(n-x),end="" ... 
- Python - for循环的本质,迭代器,可迭代对象
		参考 https://foofish.net/how-for-works-in-python.html for循环可以迭代一个可迭代(iterable)的对象 原理 生成这个可迭代对象(实现了__it ... 
- 【Python入门学习】列表生成和函数生成器的方式实现杨辉三角
		列表生成: L = [i for i in range(10)] 列表生成器: g = (i for i in range(10)) 函数生成器使用的关键字yield实现 例如fib生成器 def f ... 
- Python(四)生成器 和 杨辉三角
		学习链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177992 ... 
随机推荐
- SA-N26接口和EPS fallback
			SA-N26接口和EPS fallback 1 什么是N26接口 如下图,N26(23.501)接口为4G核心网和5G核心网之间的接口,即MME和AMF的接口,用于4G和5G的互操作 2 SA(5GC ... 
- [编辑排版]小技巧---markdown 转 richText
			Markdown 使用markdown,可以方便地编辑富文本,VSCode自带了对markdown的支持,编辑完成后可点击右上角预览,实时查看效果. 在github上有给账号,就可以使用GithubP ... 
- [PHP学习教程 - 网络]002.$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]介绍($_SERVER URL Infomation)
			引言:在使用原生PHP的时候,对于URL路径的切割,如:域名,查询参数等等的提取,通常绝大多数兄弟会忽略$_SERVER中定义的内置常量的关系,这里为大家讲解一下. 常用的URL请求路径$_SERVE ... 
- Python 每日一练(5)
			引言 Python每日一练又开始啦,今天的专题和Excel有关,主要是实现将txt文本中数据写入到Excel中,说来也巧,今天刚好学校要更新各团支部的人员信息,就借此直接把事情做了 主要对于三种数据类 ... 
- 如何看待 HashiCorp 官宣,不允许中国境内使用其旗下产品?
			欢迎转载,欢迎看官推荐. 前言 HashiCorp 官方宣布,不允许中国境内使用.部署和安装该企业旗下的企业版产品和软件.该公司比较知名的产品有:Terraform.Consul.Vagrant 等. ... 
- HotRing: A Hotspot-Aware In-Memory Key-Value Store(FAST ’20)
			本文主要解决的是基于内存的K-V存储引擎在实际应用中出现的热点问题,设计了一个热点可感知的KV存储引擎,极大的提升了KV存储引擎对于热点数据访问的承载能力. Introduction 热点问题,可 ... 
- 非阻塞赋值(Non-blocking Assignment)是个伪需求(2)
			https://mp.weixin.qq.com/s/5NWvdK3T2X4dtyRqtNrBbg 13hope: 个人理解,Verilog本身只是“建模”语言.具体到阻塞/非阻塞,只规定了两种赋 ... 
- 学习源码的第八个月,我成了Spring的开源贡献者
			@ 目录 我的经历 碰到的问题 1.担心闹乌龙 2.不知道要怎么提交 3.英文 4.担心问题描述的不清楚 给你的建议 我的经历 关注我的朋友都知道,关注两个字划重点,要考! 我最近一直在写Spring ... 
- Username for 'https://github.com': remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/GLSmile/pythontest.git/' 问题
			使用$ git push -u origin master 进行同步时,提示输入用户名和密码,但是我输入正确的信息后,仍然 会报Username for 'https://github.com': r ... 
- 使用turtle库绘制奥运五环
			import turtle as t t.setup(600,600,50,50) t.pensize(3) t.pencolor("red") t.penup() t.pendo ... 
