三、python高级特性(切片、迭代、列表生成器、生成器)
1.python高级特性
1.1切片
list列表 L=['Mli','add','sal','saoo','Lkkl']
L[0:3] #即为['Mli','add','sal'] 从索引0开始,到索引3结束,但不包括3
L[:3]等价于 L[0:3]
L[-2:] #即为 ['saoo','Lkkl'] 最后一个元素的索引为-1
L[-2:-1] #即为['Lkkl']
L=range(100) #则L[1:6:2]为 每个两个元素取一个数 所以输出为[2,4]
tuple也可以用切片操作,只是切片不可变,操作以后还是切片 例如L=(1,2,3,4) 则L[0:3]输出结果为(1,2,3)
字符串也可以用切片,例如 m='sajlkdjsalkjd' 则m[0:3] 输出'saj'
1.2迭代
如果定义一个list或tuple,可以用for循环遍历,称之为迭代
对于dict类型,也可以运用迭代,只不过输出key值
例如:
dict={'lk':'','klk':'','kkd':''}
for n in dict:
print n
结果输出
kkd
lk
klk
要想输出value值只需
dict={'lk':'','klk':'','kkd':''}
for n in dict.itervalues():
print n
同样如果想要输出 key-value的值(两个都输出),需要将代码改为 for n in dict.iteritems() #此时n为一个tuple类型
for key,v in dict.ie=ieritems()
1.3列表生成式
顾名思义 list生成式
[x*x for x in range(3)] #输出结果为[0,1,4]
[x*x for x in range(3) fi x%2==0] #输出结果为[0,4]
[m+n for m in 'ABC' for n in 'abc'] #输出结果为['Aa', 'Ab', 'Ac', 'Ba', 'Bb', 'Bc', 'Ca', 'Cb', 'Cc'](全排列)
L=['ABC','DEF','GHI'] [s.lower() for s in L] #将L中的大写字母改为小写
1.4生成器(generator)
列表生成器工作时,必须建立一个列表list,但是list的内存有限制,不可能无限大,为了弥补这一不足,生成器自然而然诞生,生成器是在不断循环的过程中推算出后面的结果,而不需要建立一个完整的list列表,所以不会占用那么多内存
生成器有很多种产生的方法,其一就是将列表生成式的[]换位()
即:g=(x*x for x in range(5)) 输出时只能用g.next()输出
即g.next() #输出0
g.next() #输出1
g.next() #输出2
g.next() #输出3
g.next() #输出4
g.next() #输出StopIteration
亦可用循环输出,即:
for n in g
print n
法二 用yield
例如斐波拉契数列 (每个数都是前两个数的和)例1,1,2,3,5,8,13.....
一般的函数定义为
def fib(max):
a,b,n=0,1,0
if n<max:
a,b,n=b,a+b,n+1
print a
如果用生成器修改函数,则只需把print改为yield
def fib(max):
a,b,n=0,1,0
if n<max:
a,b,n=b,a+b,n+1
yield a
调用时 for n in fib(6):
print n
或者 o=fib(5)
o.next() 进行输出
fib不是普通的函数,而是generator,在执行过程中,遇到yield就中断,下次继续执行,我们在循环过程中不断调用yield,就会不断中断。当然要给循环设置一个条件来退出循环,不然就会产生一个无限数列出来。
三、python高级特性(切片、迭代、列表生成器、生成器)的更多相关文章
- Python 高级特性介绍 - 迭代的99种姿势 与协程
Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...
- python高级特性:切片/迭代/列表生成式/生成器
廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...
- Python高级特性(切片,迭代,列表生成式,生成器,迭代器)
掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...
- Python学习 Day 4 函数 切片 迭代 列表生成式 生成器
定义函数 def my_abs(x):#求绝对值的my_abs函数 if x >= 0: return x else: return –x def nop():#空函数 pass#占位符 参数检 ...
- 【转】Python高级特性——切片(Slice)
摘录廖雪峰网站 定义一个list: 1 L = ['haha','xixi','hehe','heihei','gaga'] 取其前三个元素: >>> L[0],L[1],L[2] ...
- Python高级特性——切片(Slice)
摘录廖雪峰网站 定义一个list: L = ['haha','xixi','hehe','heihei','gaga'] 取其前三个元素: >>> L[0],L[1],L[2] (' ...
- Day7 python高级特性-- 切片 Slice
先举一个例子,取list或tuple中的某几个元素: 1.取 ['a','b','c','d','e','f'] 第1.2.5.6个元素: >>> a = [' ...
- Python高级特性:迭代
迭代的目的是实现遍历出一个可迭代对象的元素,即for循环 基本语法 : for ... in ... 首先只有可迭代对象才可以迭代,判断一个对象是不是可以迭代的方法如下: >>> f ...
- Python高级特性(1):Iterators、Generators和itertools(转)
译文:Python高级特性(1):Iterators.Generators和itertools [译注]:作为一门动态脚本语言,Python 对编程初学者而言很友好,丰富的第三方库能够给使用者带来很大 ...
随机推荐
- 48. Rotate Image
题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...
- SVN update: 'skipped' message
在eclipse中用svn插件同步google code老是服务器连接time out!就只有通过检出项目再更新啦,结果遇到个SVN update: 'skipped' message问题,还是sta ...
- C#实现Comparable接口实现排序
C#中,实现排序的方法有两种,即实现Comparable或Comparer接口,下面简单介绍实现Comparable接口实现排序功能. 实现Comparable接口需要实现CompareTo(obje ...
- hdu 1176 免费馅饼(nyist 613)
http://acm.hdu.edu.cn/showproblem.php?pid=1176 dp[i][j]:表示第i秒接j位置的馅饼的最大值. 三种状态: dp[i][j]=max(dp[i-1] ...
- (七)CSS定位(Positioning)
CSS定位属性允许对元素进行定位. 一切皆为框: div.h1或p元素常被称为块级元素,而span和strong等元素成为行内元素,但是可是使用 display 属性改变框的类型,将display设置 ...
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口(老罗学习笔记4)
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...
- Hibernate的一个注释 @Transient
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性. 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basi ...
- java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Drawable;I)V in class Landroid/support/v4/graphics/drawable/DrawableCompat
Bug: java.lang.NoSuchMethodError: No static method setLayoutDirection(Landroid/graphics/drawable/Dra ...
- UVa 12063 (DP) Zeros and Ones
题意: 找出长度为n.0和1个数相等.没有前导0且为k的倍数的二进制数的个数. 分析: 这道题要用动态规划来做. 设dp(zeros, ones, mod)为有zeros个0,ones个1,除以k的余 ...
- ECshop 每个数据库表结构说明
ecs_account_log // 用户账目日志表 ecs_activity // 活动表(代码,名称,开始,结束,描述) ecs_ad // 广告表(位置,类型,名称,链接,图片,开始,结束,广告 ...