列表生成式

a = [x for x in range(10)]

print(a)

x 可进行操作

a = [x*2 for x in range(10)]

print(a)

x甚至可以为函数,

def f(n):

  return n*n*n

a = [f(x) for x in range(10)]

########################

赋值方法

t = ('123',8)
a,b = t
print(a)
print(b)
#############
a =(x for x in range(10))#
print(a)#generator object
这个时候打印出来的结果是一个生成器对象,并没有生成序列且将里面的元素并全部存进内存(列表生成器时生成的列表,列表里的元素已经全部存进内存了)
类比于之前是厨师做了N道菜出来(列表),菜(元素)全部吃进了肚子(内存),这里只是生成了一个厨师(生成器),想吃什么菜(元素)就调用厨师进行生成。 print(next(a)) 这样就可答应序列的第一个值了,next(a)等价于 a.__next__() a.next()
生成器里能迭代多少次,就能取多少次值,只能按顺序一个一个区,不能隔取,反顺序取,取完不能再进行曲了,会返回迭代错误的报错。
生成器就是一个可迭代对象Iterable object
for i in s:
  print(i)
这里for循环其实就是调用了next(s),循环时,第一次i打印0 ,第二次打印1,第二次打印的时候0对象由于没人引用,已经被回收了。 ####
生成器第二种生成方法:使用yield
def foo():
  print("Ok1")
  yield 1
  print("OK2")
  yield 2
foo() 直接调用foo() 是不会打印的,因为这是一个生成器函数,碰到yield 就会创建一个生成器
g = foo()
next(g) 采用next(g) 调用,遇到yield 则返回生成器里定义的第一个值。
next(g) 再次采用next(g)进行调用,会yield 1开始,返回值 ##
凡是能进行for循环的 都是可迭代的。
凡是有拥有__iter__方法的都是可迭代对象。
###
使用斐波那契数列进行生成器的例子
def fbnq(max):
  n,before,after = 0,0,1
  while n < max:
    yield after #将需求里需要的值设置为yield 返回的即可,yield 其实就是等同于return.
    before,after =after,before + after
    n = n+1 next(fbnq(10)) ####
send方法
a.send('eeee')
def bar():
    print("OK")
count=yield 1
print(count) print("OK2'")
yield 2 g = bar()
next(g)
b = g.send('eee')
print(b)
####
迭代器
满足两个条件:1 有iter方法,2 有next方法
l = [1,2,3,4]
d = iter(l)
for 循环内部三件事:
1 调用可迭代对对象的iter方法返回一个迭代器
2 不断调用迭代器对象的next方法
3 捕获异常(迭代器迭代结束)进行退出 ####
判断是否为list,迭代器,可迭代对象
from collections import Iterator
isinstance([1,2,3,4],list)
isinstance([1,2,3,4],Iterator)
isinstance([1,2,3,4],Iterable)
 
###
f = open('abc123.txt','r)
for i in f.readlines(): 这里是将文件按行取出,把每一行当成一个元素放入内存,这样文件很大时,元素很多,占用内存也用掉了很多。
for i in f(): 这里f是一个迭代器,放入内存只是一个迭代器,这样遍历时,每次拿出来一行就看一行,前一行就被内存回收了,内存里始终只有一行存在。

####
一句话实现查找文件里温度最长的行
print(max(len(x) for x in open('日志记录','r',encoding='utf8')))
 

python语法_列表生成器_生成器_迭代器_异常捕获的更多相关文章

  1. Python中的列表解析和生成器表达式

    Python中的列表解析和生成器表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.列表解析案例 #!/usr/bin/env python #_*_coding:utf-8 ...

  2. python学习笔记——列表生成式与生成器

    1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...

  3. python基础:列表生成式和生成器

    列表生成式(List Comprehension) 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成 list ...

  4. Python 迭代器之列表解析与生成器

     [TOC] 1. 列表解析 1.1 列表解析基础 列表解析把任意一个表达式应用到一个迭代对象中的元素 Python内置ord函数会返回一个字符的ASCII整数编码(chr函数是它的逆过程, 它将A ...

  5. python基础15下_迭代器_生成器

    print(dir([])) #告诉我列表拥有的所有方法 # 双下方法 # print([1].__add__([2])) print([1]+[2]) ret = set(dir([]))& ...

  6. python基础15上_迭代器_生成器

    # 迭代器和生成器 # 迭代器: # 双下方法 : 很少直接调用的方法.一般情况下,是通过其他语法触发的 # 可迭代的 —— 可迭代协议 含有__iter__的方法('__iter__' in dir ...

  7. day18_文件处理_迭代器_生成器

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ********************day18_文件处理_迭代器_生成器 ************** ...

  8. python语法基础-函数-迭代器和生成器-长期维护

    ###############    迭代器    ############## """ 迭代器 这是一个新的知识点 我们学习过的可以迭代的对象有哪些? list str ...

  9. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  10. Python之列表生成式、生成器、可迭代对象与迭代器

    本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法 ...

随机推荐

  1. pwnable.tw hacknote

    产生漏洞的原因是free后chunk未置零 unsigned int sub_80487D4() { int index; // [esp+4h] [ebp-14h] char buf; // [es ...

  2. 爬虫 解析库re,Beautifulsoup,

    re模块 点我回顾 Beautifulsoup模块 #安装 Beautiful Soup pip install beautifulsoup4 #安装解析器 Beautiful Soup支持Pytho ...

  3. Django-视图层(view)

    视图层(view) ​ 视图函数,简称视图,本质上是一个简单的Python函数,它接受Web请求并且返回Web响应.响应的内容可以是HTML网页,重定向,404错误,图片等任何东西,但本质是返回响应对 ...

  4. oracle wallet使用与维护

    oracle wallet使用与维护2015年05月26日 17:58:55 SilenceRiver 阅读数:1614oracle wallet使用与维护---oracle无密码登录分类: Orac ...

  5. 让oracle数据库的表的id自动递增

    1.创建递增序列 CREATE SEQUENCE  ID_ADD(序列名称)INCREMENT BY 1START WITH 1MINVALUE 1NOMAXVALUE; 2.创建触发器绑定到表上cr ...

  6. 详解MariaDB数据库的事务

    1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...

  7. Widows自带系统监控工具——24小时监控服务器性能

    博文来源:https://blog.csdn.net/qq_41650233/article/details/84313153 操作步骤1.运行程序perfmon.exe 2.在数据收集器下选择[用户 ...

  8. 完美解决cannot resolve symbol servlet 的报错

    1.右键点击项目,打开open module settings 2.选择Libraries 3.选择中间+号,点击java,然后选择tomcat/lib/servlet-api.jar 4.点击app ...

  9. 编译php-5.3.28

    1. 下载php-5.3.28 2. 编译/安装 ./configure --prefix=/usr/local/php --enable-fpm --enable-maintainer-zts -- ...

  10. PLSQL僵死

    同样的SQL语句,同一数据库,但在不同的PLSQL中执行,出现僵死的问题. 修改SQLNET.ORA文件的SQLNET.EXPIRE_TIME值为10,10为默认值.