一、切片

  对于取指定索引的值,python提供了切片来简化傻傻的循环

list2 = ["apple", "water", "banana", "mango"]
# 取索引0到3,左闭右开
list2[0:3]
['apple', 'water', 'banana']
#起始为0时可以省略
list2[:3]
['apple', 'water', 'banana']

  其他诸如负数之类也是一如既往的支持的

  更多切片操作,参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856

二、迭代

  普通遍历可以使用循环

>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)

  遍历dict也是一样的:for k, v in d.items()

  带下标的可以使用enumerate

list1 = ["f", "m"]
for i, e in enumerate(list1):
print(i, e)

三、列表生成式

  直接看一个生成偶数平方的例子:

[x*x for x in range(1, 10) if x % 2 == 0]
[4, 16, 36, 64]

  列表生成甚至可以嵌套,多层for

四、生成器

  这种一边循环一边计算的机制,称为生成器:generator。

  创建生成器可以通过把生成式的[]改成():

g = (x*x for x in range(1, 10) if x % 2 == 0)
g
<generator object <genexpr> at 0x000001EED0D203B8>

  这里的g保存的就是算法了,那即使这个算法生成的序列非常大也没关系,这里只存算法,后面使用的时候才会算出结果:

g = (x * x for x in range(10))
>>> for n in g:
... print(n)
# 慎用不可控的next(g)来取元素

  第二种产生生成器的方法是在函数定义中使用yeild关键字,详细查看廖雪峰老师的博客

五、迭代器

  可以直接作用于for循环的对象统称为可迭代对象:Iterable

  可以使用isinstance()判断一个对象是否是Iterable对象(需导包)

  可以通过next()来不断取出下一个值,直到异常抛出(所以一般使用for控制)

Python3入门(五)——高级特性的更多相关文章

  1. Python学习札记(十五) 高级特性1 切片

    参考: 高级特性 切片 Note 1.掌握了Python的基础语法之后,就可以写出很多很有用的程序了,比如打印1-90的奇数: #!/usr/bin/env python3 L = [] n = 1 ...

  2. mabatis入门五 高级结果映射

    一.创建测试的表和数据 1.创建表 1CREATE TABLE items ( 2 id INT NOT NULL AUTO_INCREMENT, 3 itemsname VARCHAR(32) NO ...

  3. RabbitMQ系列(五)--高级特性

    在上一篇文章讲解MQ消息可靠性投递和幂等性中有提到confirm机制的重要性,现在更相信的说明一下 一.Confirm机制 Confirm就是消息确认,当Producer发送消息,如果Broker收到 ...

  4. python3入门

    简介 计算机基本概念与程序设计语言分类 python风格指南 基础语法 python3 基础语法:基本输入输出 python3 基础语法:标识符和保留字 python3 基础语法:注释 python3 ...

  5. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

  6. 最新Python3.6从入门到高级进阶实战视频教程

    点击了解更多Python课程>>> 最新Python3.6从入门到高级进阶实战视频教程 第1篇 Python入门导学 第2篇 Python环境装置 第3篇 了解什么是写代码与Pyth ...

  7. Java第五次作业--面向对象高级特性(抽象类与接口)

    Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...

  8. Python3学习(二)-递归函数、高级特性、切片

    ##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...

  9. Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍

    前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 ...

  10. Zookeeper系列五:Master选举、ZK高级特性:基本模型

    一.Master选举 1. master选举原理: 有多个master,每次只能有一个master负责主要的工作,其他的master作为备份,同时对负责工作的master进行监听,一旦负责工作的mas ...

随机推荐

  1. 清除input numer 点击样式

    input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; }

  2. 高性能JavaScript(快速响应的用户界面)

    浏览器UI线程 用于执行JavaScript代码和更新界面的进程被称为 “浏览器UI线程” . UI线程的工作基于一个简单的队列系统,任务会被保存到队列中直到线程空闲,一旦空闲队列就被重新提取出来运行 ...

  3. 借助form表单向web服务器发送消息

    form表单是常用的,在网页浏览器中 用户点击的请求经htto协议发送回web容器,请求处理 建立用户的页面 <!DOCTYPE html> <html> <head&g ...

  4. Leaflet.draw 无法编辑multipolygon类型多边形 解决方法

    问题说明 在做面要素的编辑的时候,当对multiploygon类型的面要素进行编辑的时候,出现如下错误: TypeError: Cannot read property 'lat' of null 通 ...

  5. Python 自定义线程池

    """思路1,将任务放在队列 1)创建队列:(初始化) 2)设置大小,线程池的最大容量 3)真实创建的线程 列表 4)空闲的线程数量 2,着手开始处理任务 1)创建线程 ...

  6. ArcGIS Server + ArcGIS Portal 10.5

    1.安装IE11 2. 域名需要在C:\Windows\System32\drivers\etc\host文件中添加 127.0.0.1  机器名.域名 win2008.smartmap.com 19 ...

  7. ajax分页查询

    (1)先写个显示数据的页面,分页查询需要那几个部分呢? 1.首先是查询的文本框输入,还有查询按钮,那么就开始写代码吧 1 2 3 4 <div> <input type=" ...

  8. Python使用MySQLConnector/Python操作MySQL、MariaDB数据库

    使用MySQL Connector/Python操作MySQL.MariaDB数据库   by:授客 QQ:1033553122 因目前MySQLdb并不支持python3.x,而MySQL官方已经提 ...

  9. MVC与单元测试实践之健身网站(三)-角色与权限

    管理员的维护功能完成后,还有权限和角色,三者构成权限系统.这里采用的RBAC是最经典.最简单的一种,权限-角色-管理员只能层层传递,并不能直接为管理员分配权限. 一 权限.角色管理 a) 权限 之前编 ...

  10. Android--PullToRefreshListView的onRefreshComplete()不起作用的问题

    今天用到了网上开源的下拉刷新组件PullToRefreshListView的第三方下拉刷新的ListView 我们发现 有时候我们当使用它的onRefreshComplete()方法是,我们下拉出来的 ...