Python3入门(五)——高级特性
一、切片
对于取指定索引的值,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入门(五)——高级特性的更多相关文章
- Python学习札记(十五) 高级特性1 切片
参考: 高级特性 切片 Note 1.掌握了Python的基础语法之后,就可以写出很多很有用的程序了,比如打印1-90的奇数: #!/usr/bin/env python3 L = [] n = 1 ...
- mabatis入门五 高级结果映射
一.创建测试的表和数据 1.创建表 1CREATE TABLE items ( 2 id INT NOT NULL AUTO_INCREMENT, 3 itemsname VARCHAR(32) NO ...
- RabbitMQ系列(五)--高级特性
在上一篇文章讲解MQ消息可靠性投递和幂等性中有提到confirm机制的重要性,现在更相信的说明一下 一.Confirm机制 Confirm就是消息确认,当Producer发送消息,如果Broker收到 ...
- python3入门
简介 计算机基本概念与程序设计语言分类 python风格指南 基础语法 python3 基础语法:基本输入输出 python3 基础语法:标识符和保留字 python3 基础语法:注释 python3 ...
- (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)
本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...
- 最新Python3.6从入门到高级进阶实战视频教程
点击了解更多Python课程>>> 最新Python3.6从入门到高级进阶实战视频教程 第1篇 Python入门导学 第2篇 Python环境装置 第3篇 了解什么是写代码与Pyth ...
- Java第五次作业--面向对象高级特性(抽象类与接口)
Java第五次作业--面向对象高级特性(抽象类与接口) (一)学习总结 1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结. 2.汽车租赁公司,出租汽车 ...
- Python3学习(二)-递归函数、高级特性、切片
##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...
- Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍
前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 ...
- Zookeeper系列五:Master选举、ZK高级特性:基本模型
一.Master选举 1. master选举原理: 有多个master,每次只能有一个master负责主要的工作,其他的master作为备份,同时对负责工作的master进行监听,一旦负责工作的mas ...
随机推荐
- JavaScript中何时使用===,何时使用==
建议尽量都使用===,原因如下: 一致性:使用==对一致性没有任何好处,那么为什么不避免使用呢. 简单和性能:一般来说,===是最简单的操作符,因为它不用进行类型转换.JavaScript引擎的性能参 ...
- win7下解决vs2015新建项目,提示“未将对象引用设置到引用实例“的问题
问题描述: 打开vs2015新建c++项目时,出现有如下内容的对话框“未将对象引用设置到引用实例”的提示 解决方法: 1. 温馨提示:千万不要一冲动,就去卸载vs2015!! win7下安装vs20 ...
- ethernaut 以太坊靶场学习 (1-12)
前言 这个靶场搜集了许多不同的 solidity 开发的问题,通过这个可以入门 区块链安全 Fallback 给出了源码 pragma solidity ^0.4.18; import 'zeppel ...
- Hive创建指向HBase表的表
create [external] table t1(id int, value string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorag ...
- React Native常用第三方组件汇总--史上最全 之一
React Native 项目常用第三方组件汇总: react-native-animatable 动画 react-native-carousel 轮播 react-native-countdown ...
- EVE Online Third Party Development
第一部分:price_history表 # 建表语句 CREATE TABLE IF NOT EXISTS `price_history` ( `regionID` INT NOT NULL, `ty ...
- Oracle EBS OPM 子库存转移
--子库存转移 --created by jenrry DECLARE l_mtl_txn_rec mtl_transactions_interface%ROWTYPE; l_mtl_txn_lot_ ...
- md5sum 和 sha256sum用于 验证软件完整性
md5sum 和 sha256sum 都用来用来校验软件安装包的完整性,本次我们将讲解如何使用两个命令进行软件安装包的校验: sha 是什么? sha 为 安全散列算法(英语:Secur ...
- python的学习之路day5
大纲: 1.双层装饰器 单层装饰器 双层装饰器 原理 2.字符串的格式化 3.format字符串格式化 4.生成器 5.递归 6.模块的安装 7.json模块 8.pickle模块 9.time模块 ...
- How to Be Assertive Asking for What You Want Firmly and Fairly
What Is Assertiveness? It's not always easy to identify truly assertive behavior. This is because th ...