1. 生成器初始- 生成器本质就是迭代器。python社区生成器与迭代器是一种。生成器与迭代器的唯一区别:生成器是我们自己用python代码构建的。2. 生成器产生方式- 生成器函数。- 生成器表达式。- python给你提供的一些内置函数,返回一个生成器。3. 生成器函数。- 之前接触的函数:
 # def func():#     print(111)#     return 2# ret = func()# print(ret)# 执行此函数,遇到return结束函数。# 将数字2返回给ret。

- 生成器函数: 只要函数中出现了yield那么他就不是函数,它是生成器函数

def func():
# print(111)
# print(111)
# print(111)
# print(111)
# print(111)
# print(111)
yield 2,4,5
yield 3
yield 4
yield 5
ret = func() # 生成器对象
# print(ret) # <generator object func at 0x0000000001E10F68>
'''
# 类比
l1 = [2,] [2,3,4,5]
obj = iter(l1)

'''
# 只要函数中出现了yield那么他就不是函数,它是生成器函数。
# 一个next对应一个yield.
# print(next(ret))
# print(next(ret))
# print(next(ret))
# print(next(ret))
# print(next(ret))
# print(next(ret))


4. yiled与return的区别

# return 结束函数,给函数的执行者返回值(多个值通过元组的形式返回)。
# yield 不结束函数,对应着给next返回值(多个值通过元组的形式返回)。
```

  1. send(了解)

    pass

  2. 生成器的举例

    # def eat_baozi():
    #     list1 = []
    #     for i in range(1,2001):
    #         list1.append(f'{i}号包子')
    #     return list1
    #
    # print(eat_baozi())def eat_baozi_gen():for i in range(1,2001):# print(11)yield f'{i}号包子''''
    # ret1 = eat_baozi_gen()
    # ret2 = eat_baozi_gen()
    # # print(ret1)
    # # print(ret2)
    # print(next(ret1))
    # print(next(ret1))
    # print(next(ret1))
    #
    # print(next(ret2))
    # print(next(ret2))
    # print(next(ret2))
    # print(next(ret))
    # print(next(ret))
    '''# ret = eat_baozi_gen()
    #
    # for i in range(200):
    #     print(next(ret))
    #
    # for i in range(200):
    #     print(next(ret))
    
  3. yiled与yiled from。

    # yield from# def func():
    #     l1 = [1, 2, 3]
    #     yield l1
    # ret = func()
    # print(next(ret))
    # print(next(ret))
    # print(next(ret))# def func():
    #     l1 = [1, 2, 3]
    #     yield from l1
    #
    #     '''
    #     yield 1
    #     yield 2
    #     yield 3
    #     '''
    # ret = func()
    # print(next(ret))
    # print(next(ret))
    # print(next(ret))# yield : 对应next给next返回值
    # yield from 将一个可迭代对象的每一个元素返回给next
    # yield from 节省代码,提升效率(代替了for循环)
  4. 列表推导式,生成器表达式(字典推导式,集合推导式)。

    • 列表推导式:一行代码构建一个有规律比较复杂的列表。
    • 列表推导式与之前写法对比
    # l1 = [1,2,3......100]
    # l1 = []
    # for i in range(1,101):
    #     l1.append(i)
    # print(l1)# 列表推导式
    l1 = [i for i in range(1, 101)]
    # print(l1)
    
    • 两种构建方式:
      1.循环模式: [变量(加工后的变量) for 变量 in iterable]
      2.筛选模式: [变量(加工后的变量) for 变量 in iterable if 条件]

    • 循环模式:

      # 循环模式:
      # 将10以内所有整数的平方写入列表。
      # print([i**2 for i in range(1, 11)])
      # 100以内所有的偶数写入列表.
      # print([i for i in range(2, 101, 2)])
      # 从python1期到python100期写入列表list
      # print([f'python{i}期' for i in range(1, 101)])
      
    • 筛选模式:

      # print([i for i in range(1, 101) if i > 49])
      # 三十以内可以被三整除的数。
      # print([i for i in range(1, 31) if i % 3 == 0])
      # 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
      # l1 = ['barry', 'fdsaf', 'alex', 'sb', 'ab']
      # print([i.upper() for i in l1 if len(i) > 3])
      # 找到嵌套列表中名字含有两个‘e’的所有名字(有难度)
      names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
      # l1 = []
      # for i in names:
      #     for j in i:
      #         if j.count('e') > 1:
      #             l1.append(j)
      # print(l1)print([j for i in names for j in i if j.count('e') > 1])
    • 列表推导式的优缺点:

      # 列表推导式的优缺点:
      # 优点:# 1, 简单,快捷,装b。
      # 缺点:# 2. 可读性不高,不好排错。
      # 慎用,不要入迷。
    • 生成器表达式:

    与列表推导式几乎一模一样。

    循环模式,筛选模式。

    # obj = (i for i in range(1, 11))# # print(obj)# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))# # print(next(obj))
    • 如何触发生成器(迭代器)取值?
    # # 1. next(obj)# # 2. for 循环# # for i in obj:# #     print(i)# # 3. 数据转化# print(list(obj))# 生成器表达式:生成器 节省内存。
    • 字典推导式,集合推导式
    # 字典推导式,集合推导式:  两种模式: 循环模式,筛选模式
    l1 = ['小潘', '怼怼哥','西门大官人', '小泽ml亚']
    # {0: '小潘', 1: '怼怼哥', 2: '西门大官人'}
    # dic = {}
    # for index in range(len(l1)):
    #     dic[index] = l1[index]
    # print(dic)
    # print({i:l1[i] for i in range(len(l1))})# 1~100# print({i for i in range(1, 101)})
  5. 内置函数I。

    内置函数:内置的函数,python中的内置函数68种。13种是在面向对象之后讲解,还有一些不讲的。

    # eval exce
    # # 慎用
    # s1 = "{1: 'alex'}"
    # s2 = '1 + 3'
    # eval 剥去字符串的外衣,返回里面的本质
    # ret = eval(s1)
    # print(ret,type(ret))
    # print(eval(s2))# exec 代码流,过程。
    # s3 = '''
    # for i in range(3):
    #     print(i)
    # '''
    # exec(s3)# s3 = input('>>>')
    # print(eval(s3))# hash()
    # print(hash(123214134))
    # print(hash('fkljdsaklgjdfs'))
    # print(hash('gjdfs'))# help()
    # print(help(str.count))# callable  **
    # def a():
    #     pass
    #
    # b = 3433# a()
    # b()
    # print(callable(a))
    # print(callable(b))# int  **
    # print(int(3.14))
    # print(int('123'))# print(float(100))# print(complex(1,2))# print(bin(100))  # 将十进制转化成二进制。 **
    # print(oct(10)) # 将十进制转化成八进制字符串并返回。
    # print(hex(17)) # 将十进制转化成十六进制字符串并返回。 **
    # print(hex(15))# 计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)分页用到
    # print(divmod(10, 3))  # **# 保留小数的有效位置
    # print(round(3.1485926,2))# print(pow(3, 3))  # 3*3*3
    # print(pow(3, 3, 2))# 输入字符寻找其在unicode的位置。
    # print(ord('a'))
    # print(ord('中'))# 输入位置数字找出其对应的字符
    # print(chr(98))  # **
    # print(chr(20104))  # 予# repr 原形毕露  **
    # print('太白')
    # print(repr('太白'))# msg = '我叫%r' %('太白')
    # print(msg)# all  any  **
    # 0,'',[],{},set(),(),None# l1 = [1, 'fgdsa', [], {1: 2}]
    l2 = [0, '', [], {}]
    # print(all(l1)) # 判断可迭代对象元素全部都为True,返回True
    print(any(l2))  # 判断可迭代对象元素只要有一个True返回True
    
  6. 匿名函数。

    # 匿名函数:没有名字的函数
    # 匿名函数只能构建简单的函数,一句话函数。def func(x,y):return x + y
    # print(func(1, 2))# 匿名函数构建
    # func2 = lambda x,y: x + y
    # print(func2(1, 2))# 匿名函数最常用的就是与内置函数结合使用。# 写匿名函数:接收一个可切片的数据,返回索引为 0与2的对应的元素(元组形式)。# func = lambda x: (x[0],x[2])
    # print(func('太白金星'))
    # 写匿名函数:接收两个int参数,将较大的数据返回。# func1 = lambda x, y: x if x > y else y
    # print(func1(100,2))# func2 = lambda : 3
    # print(func2())
    # str() dir() range() len() print() max() min() open()
    # input() type() int() enumerate() list() id() set() dict()
    # iter() next() tuple() bool() globals() locals() frozenset()
    #
    
  7. 内置函数II.

    # sep 设定分割符。
    # end 默认是换行可以打印到一行
    # print(1, 2, 3, sep='|')
    # print(1, 2, end=' ')
    # print(3, 4)
    # f = open('log','w',encoding='utf-8')
    # # f.write('写入文件')
    # print('写入文件', file=f)# list
    # l1 = list('fdsafd')
    # print(l1)# dict
    # 创建字典的几种方式
    # dic = {1: 2}
    # # 字典推导式
    # # print({i: 1 for i in range(3)})
    # # dict()
    # dic = dict(one=1, two=2, three=3)
    # print(dic)
    # # fromkeys()# abs()  获取绝对值
    # print(abs(-10))# sum() 数字相加求和
    # sum(iterable,)
    # print(sum([1,2,3,4]))
    # print(sum([1, 2, 3, 4], 100))# 非常非常非常重要的# min 可以加功能
    # print(min([22, 11, 45, 2]))
    l1 = [('alex', 73, 170), ('太白', 18, 185), ('武大', 35, 159),]
    # # l1 = [(73, 'alex'), (35, '武大'), (18, '太白')]
    # # 找年龄最小的元组
    # # print(min(l1))
    # # 通过设置key去使用min
    # # key = 函数名
    # # def func(x):  # x = ('alex', 73)
    # #     return x[1]
    #
    # # 返回值是什么就按照什么比较最小的。
    # # min 会自动的将可迭代对象的每一个元素作为实参传给x,
    '''
    第一次,x = ('alex', 73)   73
    第二次,x = ('武大', 35)   35
    第三次,x = ('太白', 18)   18
    '''
    # 将遍历的那个元素即是 ('太白', 18) 返回
    # print(min(l1,key=func))
    # print(min(l1,key=lambda x: x[1]))# def func(x):
    #     return x[1]# print(min(l1,key=func))
    # print(min(l1,key=lambda x: x[1]))
    # print(min(l1,key=lambda x: x[2])[0])a = 1
    # 练习:
    dic = {'a':3,'b':2,'c':1}
    # 将dic值最小的键返回。
    # print(min(dic,key= lambda x:dic[x]))
    # # 将dic值最小的值返回。
    # print(dic[min(dic,key= lambda x:dic[x])])# dic = {'A':['李业', 67],'b': ['怼哥', 95],'c': ['冯垚', 85]}
    #
    # # 将成绩最低的从属于的那个列表返回。
    # print(dic[min(dic,key=lambda x:dic[x][1])])
    # # 将成绩最低的分数返回。
    # print(dic[min(dic,key=lambda x:dic[x][1])][1])# max() 与min 相同。# reversed()  对一个可迭代对象进行翻转,返回一个迭代器# s1 = 'alex'
    # # print(reversed(s1))
    # for i in reversed(s1):
    #     print(i)# 内置函数:bytes()
    s1 = '太白'
    # 方法一:
    # print(s1.encode('utf-8'))
    # 方法二:
    # print(bytes(s1,encoding='utf-8'))# 解码:
    # b1 = b'\xe5\xa4\xaa\xe7\x99\xbd'
    # # 方法一:
    # # print(b1.decode('utf-8'))
    # # 方法二:
    # print(str(b1, encoding='utf-8'))
生成器的初识生成器本质就是迭代器.python社区中生成器与迭代器是一种.生成器与迭代器唯一的区别:生成器是我们自己用python代码构建的
生成器的产生方式生成器函数
生成器表达式
python给你提供的一些内置函数,返回一个生成器
生成器函数def func():​   print(111)​   return 2ret = func() #执行此函数,遇到return结束函数print(ret) #将数字2返回给retdef func():​   print(111)​   yield 2ret = func() #生成器对象print(next(ret))1112##只要函数中出现yield那么他就不是函数,他是生成器函数##一个next对应一个yieldyiled与return的区别return 结束函数 给函数的执行者返回值(返回值是多个值时通过元组的形式返回)
yield 不结束函数 对应着给next返回值(返回值是多个值时通过元组的形式返回)
send(了解)生成器的举例def eat_baozi():list1 = []for i in range(1,2001):​   list1.append(f'{i}号包子')return list1eat_baozi()yield与yiled fromyield: 对应next给next返回值yield from: 将一个可迭代对象的每一个元素 返回给nextyield from: 节省代码,提升效率(代替了for循环)列表推导式,生成器表达式(字典推导式,集合推导式)列表推导式: 一行代码构建一个有规律的比较复杂的列表.两种构建方式:循环模式:[变量(加工后的变量) for 变量 in iterable]
筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]
列表推导式的优缺点:优点: 简单 快捷 装逼
缺点: 可读性不高,不好排错
慎用 不要入迷生成器表达式:与列表表达式几乎一模一样循环模式,筛选模式如何触发生成器(迭代器)取值?next(obj)
for循环
数据转化
生成器表达式: 节省内存字典推导式:两种模式 循环模式 筛选模式内置函数1:python中的内置函数68种.eval 剥去字符串的外衣,返回里面的本质 慎用
exec 执行代码流 过程
hash 计算hash值
help 提供帮助的
callable 判断一个对象是否可调用的
int 取整 转换成整数
float 转换成小数
complex -数
bin 将十进制转换成二进制
oct 将十进制转换成八进制
hex 将十进制转换成十六进制
divmod 计算除数与被除数的值 分页用到
round 保留小数的有效位数会四舍五入
pow 求次幂
bytes 用于不同编码之间的转换
ord 输入字符找该字符编码的位置 输入字符寻找其在Unicode的位置
chr 输入位置数字找出其对应的字符
repr 返回一个对象的string形式(原形毕露)
all 判断可迭代对象元素全部为True返回True any 判断可迭代对象只要有一个元素为True就返回True
内置函数sep: 设定分隔符
end:默认是换行可以打印到一行
list:
dict:
abs:获取绝对值
sum:sum(iterable,) 只能是数字相加
max():求最大值
min():求最小值可以加功能
reversed 对一个可迭代对象进行翻转返回一个迭代器
匿名函数:没有名字的函数匿名函数只能构建简单的函数,一句话函数.
匿名函数的构建 lambda 匿名函数最常用的就是与内置函数结合使用
func = lanbda x,y: x+y

转载于:https://www.cnblogs.com/hql1117/p/11061091.html

Python-----学了今天,忘了昨天.相关推荐

  1. python教程自带数据库_python教程自带数据库 | Python学哪个数据库

    python使用数据库 增条数据import pymysql #返回Connection #host="localhost" con = pymysql.connect(host= ...

  2. 开课吧python小课学了有用吗-Python学得好,升职加薪下班早

    原标题:Python学得好,升职加薪下班早 "今天,又是加班满满的一天."琳琳苦笑. 昨天跟闺蜜琳琳约了一块吃饭,坐下来没说几句话,琳琳就接到了领导的电话,直接打车赶去公司加班. ...

  3. Python学多久能接单赚钱?按照这套路线学习,30天内就可以!

    Python学多久才能独立接单赚钱? 一个月足够了! 新手学习Python,按这套路线学习,30天内就可以达到精通! Python作为当下最热门的程序语言之一, 但是对于很多没有编程基础的初学者来说, ...

  4. 《从问题到程序:用Python学编程和计算》——第2章 计算和编程初步 2.1 数值表达式和算术...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2 ...

  5. 《从问题到程序:用Python学编程和计算》——第3章 基本编程技术 3.1 循环程序设计...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第3 ...

  6. 《从问题到程序:用Python学编程和计算》——3.4 定义函数

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.4节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3. ...

  7. 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

  8. python学到什么程度可以做兼职-Python学到什么程度才可以去找工作?掌握这4点足够了!...

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

  9. python怎么自学、可以达到什么程度-Python学到什么程度才算精通?天津Python培训...

    到底将Python学到什么什么程度才算是精通呢?想必每个人都有着自己的意见和想法,如:会分析数据.爬虫.web等,但是在小编看来这些并不是精通Python,这些知识精通某一个领域罢了. 一.那么要怎样 ...

  10. 学会python能找工作吗-Python学到什么程度才可以去找工作?掌握这4点足够了!...

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

最新文章

  1. 计算机网络研讨_[即将举行的网络研讨会]对Kubernetes进行故障排除:您需要具备的7个关键组件...
  2. sql2008 查询某个表被那些存储过程用到
  3. python colorama模块
  4. 回字有四样写法之引号编码
  5. OpenCV-数组加权和cv::addWeighted
  6. python爬虫步骤-Python爬虫的步骤和工具
  7. 利用vertical-align:middle实现在整个页面居中
  8. usb扫描枪驱动下载 wince_常用扫描枪驱动
  9. 内存管理API之get_unmapped_area
  10. 【人类简史】从动物到上帝 [以色列-尤瓦尔 · 赫拉利](阅读笔记)
  11. 沈劭劼居然还是大疆的....大疆真的可怕。大疆如果做一款室内无人机不分分钟秒杀其他。
  12. 人脸识别实践(2) - 人脸识别系统展示
  13. 【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
  14. canvas实现图片旋转
  15. BZOJ 1002 1003 1007 被屠记录
  16. Delayed Adversarial Training with Non-Sequential Adversarial Epochs
  17. 【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘
  18. PDF Cookbook by Eric
  19. Linux组播编程 组播发送和组播接收
  20. Linux CentOS 7安装之后,ip addr命令无法显示ip地址。ifconfig命令报错:未找到命令!

热门文章

  1. 【Python基础】07、Python类与面向对象
  2. Linux 应用程序开发入门
  3. 推荐美加版S3好用的两个ROM
  4. 存储新技术之“连续数据保护(CDP)”
  5. silverlight for olap version milestone 07 updated!
  6. intellij自动生成构造函数
  7. 按行拼接两个txt文件的python实现
  8. 操作系统 哈工大 李治军
  9. xsd文件转图片_如何将图片转化为PDF格式?分享一个超简单的方法给你
  10. php ismethod,结合php类三种属性说明is_callable和method_exists简单区别