Day 21 三元表达式、生成器函数、列表解析

知识点程序:

  1 #! /usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 # __author__ = "DaChao"
  4 # Date: 2017/6/16
  5
  6 l = [i for i in range(100) if i%2 > 0]
  7 print(l)
  8
  9 ###########################
 10 #生成器 generator!!! 模拟tail grep功能
 11 ###########################
 12
 13 # import time
 14 # def tail(filepath,encoding="utf-8"):
 15 #     with open(filepath,encoding=encoding) as f:
 16 #         f.seek(0,2)
 17 #         while True:
 18 #             line = f.readline()
 19 #             if line:
 20 #                 # print("line")
 21 #                 yield line
 22 #             else:
 23 #                 time.sleep(0.5)
 24 #
 25 # g = tail("a.txt")
 26 # for i in g:
 27 #     print(i)
 28
 29 # # tail("a.txt")
 30 # def grep(lines,pattern):
 31 #     for line in lines:
 32 #         if pattern in line:
 33 #             print(line)
 34 # #
 35
 36 # # for i in g:
 37 # #     print(g)
 38 # g1 = grep(g,"error")
 39 #
 40 # g2 = grep(g1,"404")
 41 # #
 42 # for line in g2:
 43 #     print(line)
 44
 45 ###########################
 46 #生成器 generator!!! yield 的重复使用
 47 ###########################
 48
 49 # def countdown(n):
 50 #     print("start")
 51 #     while n > 0:
 52 #         yield n
 53 #         n -= 1
 54 #     print("end")
 55 #
 56 # g = countdown(5)
 57
 58 # print(g)
 59 # print(g.__next__())
 60 # print(g.__next__())
 61 # print(g.__next__())
 62 # print(g.__next__())
 63 # print(g.__next__())
 64 # print(g.__next__())
 65 #
 66 # for i in g:
 67 #     print(i)
 68
 69
 70
 71 ###########################
 72 #生成器 带有yield
 73 ###########################
 74
 75 # def foo():
 76 #     print("1111111")
 77 #     yield 1
 78 #     print("222222222")
 79 #     yield 2
 80 #     print("33333333")
 81 #     yield 3
 82 #
 83 # g = foo()
 84 #
 85 # for i in g:       #obj = g.__iter__()  #obj,__next__
 86 #     print(i)
 87
 88 # print(g.__next__())
 89 # print(g.__next__())
 90 # print(g.__next__())
 91 # print(g.__next__())
 92 ###########################
 93 #生成器函数
 94 ###########################
 95
 96 # def lay_eggs(num):
 97 #     ‘‘‘
 98 #     存鸡蛋!
 99 #     :param num:
100 #     :return:
101 #     ‘‘‘
102 #     egg_list = []
103 #     for egg in range(num):
104 #         egg_list.append("egg%s" %egg)
105 #     return egg_list
106
107 # yikuangdan = lay_eggs(10)
108 # for i in yikuangdan:           #下蛋
109 #     print(i)
110
111 # def lay_eggs1(num):
112 #     for egg in range(num):
113 #         res = "egg%s" %egg
114 #         yield res
115 #         print("Egg +")
116 #
117 # laomuji = lay_eggs1(10)
118 # print(laomuji)
119 # print(laomuji.__next__())
120 # print(laomuji.__next__())
121 # print(laomuji.__next__())
122 # print(laomuji.__next__())
123 # egg_l = list(laomuji)
124 # print(egg_l)
125
126
127 ##########################
128 #迭代器
129 ###########################
130
131 # d = {"a":1,"b":2,"c":3}
132 #
133 # obj = d.__iter__()
134 #
135 # while True:
136 #     try:
137 #         i = obj.__next__()
138 #         print(i)
139 #     except StopIteration:
140 #         break
时间: 2024-10-12 22:59:00

Day 21 三元表达式、生成器函数、列表解析的相关文章

python_day04 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式

本节课重要知识点内容如下: 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式 1.函数嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数 def bar(): print('from nbar')def foo(): print('from foo') bar()foo()def max2(x,y): if x > y: return x else: return ydef max4(a,

Python 迭代器、生成器和列表解析

迭代器 迭代器在 Python 2.2 版本中被加入, 它为类序列对象提供了一个类序列的接口. Python 的迭代无缝地支持序列对象, 而且它还允许迭代非序列类型, 包括用户定义的对象.即迭代器可以迭代不是序列但表现出序列行为的对象, 例如字典的 key , 一个文件的行, 等等.迭代器有以下特性: 提供了可扩展的迭代器接口. 对列表迭代带来了性能上的增强. 在字典迭代中性能提升. 创建真正的迭代接口, 而不是原来的随机对象访问. 与所有已经存在的用户定义的类以及扩展的模拟序列和映射的对象向后

迭代器|三元表达式|生成器

import numpy as np '''迭代:每次获得的结果都基于上次结果来的(更新换代)迭代器协议:对象必须提供一个next方法 ,执行该方法,要么返回迭代器的下一项,要么引起异常迭代对象(节省内存):实现迭代器协议的对象(内部:__iter__()方法) for循环的本质:循环所有对象,全部使用迭代器协议for循环可以遍历(序列[字符串.列表.元祖].非序列[字典.集合.文件对象])''''''疑问解答:(字符串.列表.元祖.字典.集合.文件对象)都不是可迭代对象,只是for循环调用了他

python预课03 三元表达式示例,函数定义示例,七段彩码管绘制示例

三元表达式 s = '不下雨' if s == '下雨': print('带伞') if s == '不下雨': print('不带伞') #等效与以下语句 print('带伞' if s == '下雨' else '不带伞') # 三元表达式 函数定义 def login(username,password): #定义login函数 """登陆""" name=input("请输入您的用户名: ").strip() #去除输

十七、python沉淀之路--三元表达式、列表解析

一.三元表达式 1 a = '骑车' 2 3 res = '好天气' if a == '骑车' else '睡觉' 4 print(res) 1 睡觉 解析:res = '好天气'        if a == '骑车'           else '睡觉'  ,将一个句子分了三部分.简单的逻辑运算可用这种三元表达式 二.列表解析 1 gift_list = [] 2 for i in range(10): 3 gift_list.append('礼盒%s'%i) 4 print(gift_l

生成器 三元表达式 列表生成式 匿名函数 内置函数

生成器 1.什么是生成器? ? -生成的工具 ? -生成器是一个自定义的迭代器,本质上是一个迭代器. 2.如何实现生成器? -但凡在函数内定义的yield ? -调用函数时,函数体代码不会执行 ? 会返回一个结果,这个结果就是生成器. 3.yield ? -每一次的yield都会往生成器对象中添加一个值. ? -yield只能在函数内定义 ? -yield可以保存函数的暂停状态 yield和return的对比 ? -相同点: ? 返回值的是不限制的: ? -不同点 ? return一次只可以返回

Python自动化运维之7、格式化输出、生成器、迭代器、列表解析、迭代器表达式

Python格式化输出: Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] (1)百分号格式化 %[(name)][flags][width][.precision]typecode .... (name) 可选,用于选择指定的key flags 可选,可供选择的值有: + 右对齐:正数前加正好,负数前加负号: - 左对齐:正数前无符号,负数前加负号: 空

python列表解析和生成器表达式

列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析.列表解析表达式为: [expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr] 第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表. 第二种语法:加入了判断语句,只有满足条件的内容才把iterable里相

python之列表解析与生成器

防伪码:忘情公子著 什么是列表解析? 列表解析就是根据已有列表,高效生成新列表的方式 列表解析是python迭代机制的一种应用,它常用于实现创建新的列表,因此要放置于[]中 语法: [expression for iter_var in iterable][expression for iter_var in iterable if cond_expr] 例: In [1]: L = [i**2 for i in xrange(9)] In [2]: print L[0, 1, 4, 9, 16