如何更好地理解Python迭代器和生成器

答案 迭代器和生成器都是Python中特有的概念,迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素,从实现上来看,一个可迭代的对象必须是定义了__iter__()方法的对象,而一个迭代器必须是定义了__iter__()方法和next()方法的对象。生成器的概念要比迭代器稍显复

如何更好地理解Python迭代器和生成器

迭代器和生成器都是Python中特有的概念,迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素,从实现上来看,一个可迭代的对象必须是定义了__iter__()方法的对象,而一个迭代器必须是定义了__iter__()方法和next()方法的对象。生成器的概念要比迭代器稍显复杂,因为生成器是能够返回一个迭代器的函数,其最大的作用是将输入对象返回为一个迭代器。Python中使用了迭代的概念,是因为当需要循环遍历一个较大的对象时,传统的内存载入方式会消耗大量的内存,不如需要时读取一个元素的方式更为经济快捷。

迭代器

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。

迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和C/C++“操作array元素”时的指针接口一致。不同之处在于,迭代器是个所谓的复杂的指针,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。因此,每一种容器型别都必须提供自己的迭代器。事实上每一种容器都将其迭代器以嵌套的方式定义于内部。因此各种迭代器的接口相同,型号却不同。这直接导出了泛型程序设计的概念:所有操作行为都使用相同接口,虽然它们的型别不同。

迭代器使开发人员能够在类或结构中支持foreach迭代,而不必整个实现IEnumerable或者IEnumerator接口。只需提供一个迭代器,即可遍历类中的数据结构。当编译器检测到迭代器时,将自动生成IEnumerable接口或者IEnumerator接口的Current,MoveNext和Dispose方法。

生成器

生成器是一次生成一个值的特殊类型函数。可以将其视为可恢复函数。调用该函数将返回一个可用于生成连续 x 值的生成器Generator

简单的说就是在函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。

这次给大家带来在ionic2中怎样使用自动生成器,在ionic2中使用自动生成器的注意事项有哪些,下面就是实战案例,一起来看一下。

ionic generator是命令行的功能,ionic2自动帮我们创建应用程序,从而节省了大量的时间,并增加我们的速度来开发一个项目的关键部分。

ionic generator使我们可以自动创建以下几部份:

?component

?directive

?page

?provider

一、创建页面:ionic g page [PageName]

通过这个命令创建一个新的页面,ionic2项目中这个命令使用最多

我们只需要进入我们的命令行中,并运行下面的命令:

ionic g page login

# Results:

√ Create app/pages/login/login.html

√ Create app/pages/login/login.scss

√ Create app/pages/login/login.tslogin.ts:

import {Component} from '@angular/core';

import {NavController} from 'ionic-angular';

@Component({

templateUrl: 'build/pages/login/login.html',

})

export class LoginPage {

constructor(public nav: NavController) {}

}login.html:

<ion-header>

<ion-navbar>

<ion-title>

login

</ion-title>

</ion-navbar>

</ion-header>

<ion-content padding class="login">

</ion-content>二、创建组件:ionic g component [ComponentName]

组件是一段代码,可以在我们的应用程序的任何部分使用

通过这个命令创建一个组件:

ionic g component myComponent

# Results:

√ Create app/components/my-component/my-component.html

√ Create app/components/my-component/my-component.tsmy-component.ts:

import {Component} from '@angular/core';

@Component({

selector: 'my-component',

templateUrl: 'build/components/my-component/my-component.html'

})

export class MyComponent {

text: string = "";

constructor() {

this.text = 'Hello World';

}

}三、创建指令:ionic g directive [DirectiveName]

指令,我们的应用程序可以在任何元素上使用的修饰符属性.

ionic g directive myDirective

# Results:

√ Create app/components/my-directive/my-directive.tsmy-directive.ts:

import {Directive} from '@angular/core';

@Directive({

selector: '[my-directive]' // Attribute selector

})

export class MyDirective {

constructor() {

console.log('Hello World');

}

}四、创建服务提供者:ionic g provider [ProviderName]

现在创建一个新的服务(提供者),提供者负责处理数据的REST API的连接,本地存储,SQLite的等等。

要创建它,我们去运行以下命令我们的终端:

ionic g provider userService

# Results:

√ Create app/providers/user-service/user-service.ts服务代码如下:

user-service.ts:

import {Injectable} from '@angular/core';

import {Http} from '@angular/';

import 'rxjs/add/operator/map';

@Injectable()

export class UserService {

data: any = null;

constructor(public : Http) { }

load() { if (this.data) {

}

return new Promise(resolve => {

this..get('path/to/data.json')

.map(res => res.json())

.subscribe(data => {

this.data = data;

resolve(this.data);

});

});

}

}五、创建管道pipe:ionic g pipe [PipeName]

该管道的变化,我们可以对任何数据使用我们的模板,如以大写字母显示文本,显示货币值,日期格式等。

ionic g pipe myPipe

# Results:

√ Create app/pipes/myPipe.ts我们的管道的代码如下

myPipe.ts:

import {Injectable, Pipe} from '@angular/core';

@Pipe({

name: 'my-pipe'

})

@Injectable()

export class MyPipe {

transform(value: string, args: any[]) {

value = value + ''; // make sure it's a string

return value.toLowerCase();

}

}最后,我们生成的应用程序结构如下图:

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

用js快速的获取html页面中的地址

怎样让webpack打包后的文件压缩变小

满天星导航栏特效

react事件绑定this的几种方式

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

图片声明:本站部分配图来自人工智能系统AI生成,国外stocksnap摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国外贸事业出一份力,发布内容不收取任何费用也不接任何广告!
 

  • 热门焦点
  • 南昌的邮政编码是多少

    南昌的邮政编码是330000。南昌市,江西省省会,江西省的政治、经济、文化、科技中心。地处江西中部偏北,介于东经115°27'至116°35'、北纬28°10'至 29°11'之间。东连余干、东乡,南接临川、丰城、西靠高安、奉新、靖安,北与永修、都昌、鄱阳三县共鄱阳湖;属亚热带季风湿润气候
    09-08
  • 韵达快递全国收费标准

    1、广东省内:首重8元/KG、续重2元/KG。2、江苏、浙江、上海、北京、福建、首重10元/KG、续重4元/KG。3、天津、重庆、安徽、广西、贵州、海南、河北、河南、湖北、湖南、江西、山东、山西、陕西、四川、云南、首重12元/KG、续重5元每/KG。4、甘肃、黑龙江、吉林、辽宁、宁
    08-17
  • 上海到广州快递费用多少钱呢?

    寄快递的收费标准一般都是按照体积或者重量来进行收费,不同的快递收费是不一样的,收费标准都是按照通用体积计算公式:重量(kg)=长(cm)×宽(cm)×高(cm)÷5000。以顺丰为例:顺丰快递在全国实行统一的收费标准,寄件同城10元,省内12元,省外20元。此价格均为首件起步价,如果超重需要
    08-18
  • 顺丰寄件的时候是怎么付款的呢?

    寄方付,收方付,第三方付意思如下:1、寄方付:就是寄东西的一方付钱 ,一般要先交钱。2、收方付:就是收东西那个人付 ,这个一般是等货到了之后收货人付款,也就是到付。3、第三方付:就是找了一个机构或者代理付钱的,即不是寄的人又不是收的人付款的统称为第三方付款。扩展资料顺丰速运
    08-17
  • 新疆的南疆和北疆分别为哪些市县?

    1.南疆:喀什,图木舒克,阿克苏,阿拉尔,和田,铁门关,昆玉,克孜勒苏柯尔克孜自治州,巴音郭楞蒙古自治州。2.北疆:乌鲁木齐,克拉玛依,阿勒泰地区,塔城地区,昌吉,石河子,北屯,可克达拉,伊犁,博尔塔拉。3.新疆的地理特征是“三山夹两盆”,新疆最北部为阿尔泰山,中部为天山,最南部为昆仑山系。阿尔泰山
    08-23
  • 北京朝阳区的所有外企

    朝阳区的外企,你只有一个个在工商局去查,以下是我整理的北京的一些外企资料,前面 一个是所有500强公司在北京的具体名字,但地址什么的就没了,哪些在朝阳我不确定。后面是整个北京知名外企的名单,但其中其实很多都不知名,呵呵。=====北京500强名单:制药:拜耳医药保健有限公司拜耳(
    09-03
  • 淘宝的优缺点?

    优点:1、开店方便快捷。淘宝有着丰富的网商服务经验,这里提供了最高效的开店解决方案。只要你有一定的互联网知识,有货源,搭配一台智能手机手机就可以拥有自己的店铺。淘小铺的装修更加方便简单,店铺目前有三种装修模板供卖家使用,只需要一键设置就可以更换成自己喜欢的模板。
    08-18
  • 顺丰拒签运费谁承担

    顺丰到付件被拒签邮费由卖方承担。1.现在很多卖家为了降低买家的购物风险和容易成交,给予买家全额到付的,既然卖家同意全额货到付款,那么这个送货的运费是由卖家支付。2.如果买家拒签拒收的,快递公司会先联系卖家立刻给买家沟通,沟通不成功的,快递公司会给卖家退回商品,这时会产
    08-17
  • 新疆阿拉尔市阿拉尔市邮编

    新疆维吾尔自治区 阿拉尔市 843300阿拉尔市,是新疆维吾尔自治区直辖的县级市,北起天山南麓山地,南至塔克拉玛干沙漠边缘,东临沙雅县,西抵柯坪县,傍依阿克苏河、塔里木河、台兰河、多浪河水系。地理坐标为东经80°30′至81°58′,北纬40°22′至40°57′之间。东邻沙雅县,西依阿
    09-03
  • 怎么算快递运费,多少钱一公斤?

    规则物品:长(cm)×宽(cm)×高(cm)÷6000=重量(KG)不规则物品:最长(cm)×最宽(cm)×最高(cm) ÷6000=重量(KG)普通快递都有带电子秤,1公斤以内算首重,1公斤以外算续重,一般续重比首重便宜2元,只计重量不计体积,8~12元起价。当然实在太大的东西他们也会按体积算。个别快递走空运的算体积和
    08-18
  • 偏远地区运费一般设置为多少

    12元-15元。根据查询国家市场监管部门发布的公告得知:偏远地区运费一般设置为12元-15元之间。偏远地区,就是超出各快递公司服务区的目的地 ,偏远地区大部分指的是新疆,西藏,甘肃,宁夏,青海,内蒙古,这六个省份。
    08-17
  • 对外贸易依存度怎么计算?

    对外贸易依存度的计算公式 如下: ? ? ? ? ? ? ? ?对外贸易依存度=一国进口+出口总额/国内生产总值出口(进口)依存度:即一国出口总额进口/其国内生产总值(关于对外贸易依存度的相
    08-11
  • 顺丰收件人的付款方式寄付现结和到付分别是什么意思?

    寄付现结就是寄件人寄件时支付运费。到付就是邮件到达目的地后由收件人支付运费。扩展资料还有一种付款方式叫货到付款业务流程1、卖家:等取货的来,来了以后告诉他货到付款(有的物流不支持,但是货运可以的)然后他会告诉你钱送到你手的大概时间(有的不说,你要自己问),货到付款对卖
    08-18
  • 深圳外贸尾货批发市场在哪里

    振中三街。深圳外贸尾货批发市场位于深圳市福田区振中三街,是一个以时装为主的市场。深圳外贸尾货批发市场由宏裕集团股份有限公司与深圳市共同投资新建的批发城。是珠江三角
    08-11
  • 顺丰从广东发到山东要多久?大约多少钱

    顺丰快递从广东(州)市到山东(济南)最快需要3天时间。山东和广东两个都是省名,不是地名,按从山东(济南)到广东(州)有1820公里左右,以经是很远了,但现在的高速路很发达,加上顺风是国内知名品牌快递单位,很快的。广东省到山东顺丰快递首重22元,续重1.1-50kg续重14元。50.1-100kg续重12元;100
    08-17