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高级特性(切片、迭代、列表生成器、生成器)的更多相关文章

  1. Python 高级特性介绍 - 迭代的99种姿势 与协程

    Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...

  2. python高级特性:切片/迭代/列表生成式/生成器

    廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...

  3. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)

    掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...

  4. Python学习 Day 4 函数 切片 迭代 列表生成式 生成器

    定义函数 def my_abs(x):#求绝对值的my_abs函数 if x >= 0: return x else: return –x def nop():#空函数 pass#占位符 参数检 ...

  5. 【转】Python高级特性——切片(Slice)

    摘录廖雪峰网站 定义一个list: 1 L = ['haha','xixi','hehe','heihei','gaga'] 取其前三个元素: >>> L[0],L[1],L[2] ...

  6. Python高级特性——切片(Slice)

    摘录廖雪峰网站 定义一个list: L = ['haha','xixi','hehe','heihei','gaga'] 取其前三个元素: >>> L[0],L[1],L[2] (' ...

  7. Day7 python高级特性-- 切片 Slice

    先举一个例子,取list或tuple中的某几个元素:     1.取 ['a','b','c','d','e','f'] 第1.2.5.6个元素:        >>> a = [' ...

  8. Python高级特性:迭代

    迭代的目的是实现遍历出一个可迭代对象的元素,即for循环 基本语法 : for ... in ... 首先只有可迭代对象才可以迭代,判断一个对象是不是可以迭代的方法如下: >>> f ...

  9. Python高级特性(1):Iterators、Generators和itertools(转)

    译文:Python高级特性(1):Iterators.Generators和itertools [译注]:作为一门动态脚本语言,Python 对编程初学者而言很友好,丰富的第三方库能够给使用者带来很大 ...

随机推荐

  1. Eclipse项目和MyEclipse项目

    因为Eclipse的项目结构和MyEclipse项目的结构不同,所以两者的项目之间不能直接运行的. 我们在创建Eclipse项目的时候可以进行一些设置,这样在Eclipse中创建的项目可以直接在MyE ...

  2. 转TerreyLee AJAX入门系列2——ScriptManager的理解总结

    ScriptManager的功能之一就是处理页面上局部更新,对于这点,我想大家都知道.但是他工作的原理到底是什么呢,这个暂且不从正面来回答. 我们这样想一下,目前能够真正实现局部刷新的就是js+xml ...

  3. epoll和poll效率差异

    http://blog.163.com/sky20081816@126/blog/static/164761023201073033517435/ 百度“epoll和poll”

  4. Storm集群的搭建

    storm的环境和hadoop的环境没有任何关系 1.安装Zookeeper集群 2.解压storm 3.修改文件conf/storm.yaml 3.1.配置zookeeper服务器 storm.zo ...

  5. 用代码编辑数据库T-SQL语句

    1.创建表 create table Car( Code varchar(50) primary key, Name varchar(50), Time date, Price float, Bran ...

  6. .net 程序员成长路线图?

    https://www.zhihu.com/question/25474641 得看赵四本, @赵劼 推荐的. CLR via C# .net Essentials C# in Depth Frame ...

  7. USACO 2006 November Gold

    POJ 3253 Fence Repair STL堆操作 我想说,STL里堆是我目前见到最蛋疼的操作. #include <cstdio> #include <cstring> ...

  8. CodeForces 489B (贪心 或 最大匹配) BerSU Ball

    题意: 有m个男孩和n个女孩,每个人都有一个舞蹈熟练度,用一个不超过100的正整数来表示. 一个男孩和一个女孩能够结为舞伴当且仅当两人的熟练度相差不超过1. 问最多能结成多少对舞伴 分析: 这是一个二 ...

  9. UVa 12563 Jin Ge Jin Qu hao【01背包】

    题意:给出t秒时间,n首歌分别的时间a[i],还给出一首长度为678的必须唱的劲歌金曲,问最多能够唱多少首歌(只要最后时间还剩余一秒,都可以将劲歌金曲唱完) 用dp[i]代表花费i时间时唱的歌的最大数 ...

  10. FFMPEG视音频编解码零基础学习方法

    在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...