python3新特性,Python3百度百科

  python3新特性,Python3百度百科

  本文主要详细介绍Python3的高阶函数,主要介绍什么是高级功能及其用法,具有一定的参考价值。感兴趣的朋友可以参考一下。

  00-1010 1.发电机2。迭代器摘要

  

目录

  #边循环边计算的机制叫做generator:generator;

  #创建生成器方法:

  # 1.将列表生产的[]更改为()。

  numsList=[num * num for num in range(10)]

  打印(列表生成生成numlist:,numlist)

  numsGenerator=(num * num for num in range(10))

  Print (generator numsGenerator:,numsGenerator:,numsGenerator)

  #使用next()函数获取生成器的下一个返回值

  Print(打印numsGenerator的第一个元素:,next(numsGenerator))

  Print(打印numsGenerator的第二个元素:,next(numsGenerator))

  打印(-)

  #使用for循环打印生成器元素

  Print(使用圆形打印生成器中的元素!)

  对于numsGenerator:中的num

  print(num,end= )

  打印( \n )

  打印(-)

  #斐波那契数列:除了第一个和第二个数以外的任何数都可以通过前两个数相加得到。

  # 1,1,2,3,5,8,13,21,34

  def斐波那契(数字):

  n,a,b=0,0,1

  而n num:

  print(b,end= )

  a,b=b,a b

  n=n 1

  返回“完成”

  打印(斐波那契数列的前10项是:)

  斐波那契数列(10)

  打印( \n )

  打印(-)

  # 2.将fibonacci()函数转化为生成器函数

  def斐波那契(数字):

  n,a,b=0,0,1

  而n num:

  产量b

  a,b=b,a b

  n=n 1

  返回“完成”

  # Tips:

  # 1.如果函数定义包含yield关键字,则该函数是一个生成函数;

  # 2.调用生成器函数将返回一个生成器;

  fib=fibonacci(10)

  打印( fib:,fib的值)

  #结果输出:

  按列表生成numlist:[0,1,4,9,16,25,36,49,64,81]

  生成numsgenerator:0x 000028 f 0 E6 ACB 88处的生成器对象gen expr

  打印numsGenerator的第一个元素:0

  打印numsGenerator的第二个元素:1

  -

  使用圆形打印生成器中的元素!

  4 9 16 25 36 49 64 81

  -

  前10个斐波那契数列项目是:

  1 1 2 3 5 8 13 21 34 55

  -

  fib:生成器对象Fibonacci在0x000028f0e7839a8的值

  e class="brush:py;"># 普通函数和generator函数的执行流程:

  # 1.普通函数:顺序执行,遇到return语句或最后一行函数语句就返回;

  # 2.generator函数:在每次调用next()的时候执行,遇到yield语句返回;

  # 3.再次执行时从上次返回的yield语句处继续执行;

  # 实例:定义一个generator函数,依次返回"Willard",18,"Engineer"

  def willardInfo():

   print("STEP1")

   yield "Willard"

   print("--------")

   print("STEP2")

   yield 18

   print("--------")

   print("STEP3")

   yield "Engineer"

  # 调用willardInfo()这个generator函数,先生成一个generator对象

  # 然后用next()函数不断获得下一个返回值,即可用循环直接打印

  willardInfoObject = willardInfo()

  for willard in willardInfoObject:

   print(willard)

  

  

# 结果输出:
STEP1
Willard
--------
STEP2
18
--------
STEP3
Engineer

  

  

  

2.迭代器

  

# 可直接用于for循环的数据类型:

  # 1.list、tuple、dict、set、str等;

  # 2.generator,包括:生成器和带yield的generator function;

  # 3.可以直接作用于for循环的对象称为可迭代对象:Iterable;

  # 4.使用isinstance()判断一个对象是否为Iterable对象;

  from collections.abc import Iterable

  print("判断list是否为可迭代对象!",isinstance([],Iterable))

  print("判断dict是否为可迭代对象!",isinstance({},Iterable))

  print("判断str是否为可迭代对象!",isinstance("Willard",Iterable))

  print("判断生成式是否为可迭代对象!",isinstance((num for num in range(10)),Iterable))

  print("判断number是否为可迭代对象!",isinstance(99,Iterable))

  

  

# 结果输出:
判断list是否为可迭代对象! True
判断dict是否为可迭代对象! True
判断str是否为可迭代对象! True
判断生成式是否为可迭代对象! True
判断number是否为可迭代对象! False

  

  

# 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

  # 使用isinstance()判断一个对象是否为Iterator对象;

  from collections.abc import Iterator

  print("判断生成器是否为迭代器!",isinstance((num for num in range(10)),Iterator))

  print("判断list是否为迭代器!",isinstance([],Iterator))

  print("判断dict是否为迭代器!",isinstance({},Iterator))

  print("判断str是否为迭代器!",isinstance("Willard",Iterator))

  print("----------------------------------------------------------")

  # Tips:

  # 1.生成器都是Iterator对象,但list、dict、str是Iterable但不是Iterator;

  # 2.Iterator对象表示数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,

  # 直到没有数据时抛出StopIteration错误;这个数据流可以看作一个有序序列,

  # 但不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,

  # Iterator的计算是惰性的,只有在需要返回下一个数据时才计算;

  # 3.使用iter()函数把list、dict、str变成Iterator;

  print("使用iter()函数把list、dict、str变成Iterator.")

  print("判断list是否为迭代器!",isinstance(iter([]),Iterator))

  print("判断dict是否为迭代器!",isinstance(iter({}),Iterator))

  print("判断str是否为迭代器!",isinstance(iter("Willard"),Iterator))

  

  

# 结果输出:
判断生成器是否为迭代器! True
判断list是否为迭代器! False
判断dict是否为迭代器! False
判断str是否为迭代器! False
----------------------------------------------------------
使用iter()函数把list、dict、str变成Iterator.
判断list是否为迭代器! True
判断dict是否为迭代器! True
判断str是否为迭代器! True

  

  

  

总结

  本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: