python迭代器的好处,for循环和迭代器哪个更高效

  python迭代器的好处,for循环和迭代器哪个更高效

  迭代器是一个可以记住导线测量位置的对象。

  迭代器对象从集合中的第一个元素开始访问,直到所有元素都被访问。迭代器不能向前递减。

  一.下一步

  语法:next(迭代器(,默认值)))

  描述:

  1.该函数需要接收可重复对象参数,每次调用都将返回可重复对象的下一个元素。如果所有元素都已返回,则会引发StopIteration异常。

  a=ITER(ABCD).

  是下一个(a)

  一个

  是下一个(a)

   b

  是下一个(a)

   c

  是下一个(a)

  迪

  2.该函数可以接收可选的默认参数。传递默认参数后,如果repeatable对象中还没有返回元素,则按顺序返回该元素的值;如果返回所有元素,则返回默认情况下指定的默认值,而不引发StopIteration异常。

  a=ITER(ABCD).

  下一个(a, e )))).

  一个

  下一个(a, e )))).

   b

  下一个(a, e )))).

   c

  下一个(a, e )))).

  迪

  下一个(a, e )))).

   e

  下一个(a, e )))).

   e

  二。国际热核聚变实验堆

  语法:ITER(object(,sentinel]))。

  描述:

  1.该函数返回一个可重复的对象。

  2.如果未提供第二个参数,则第一个参数是一个集合(字典、集合、不变集合))或一个序列假脱机程序,它实现一个支持可重复协议的集合(即__iter__)()方法。

  A=ITER((a) :1,b) :2))字典集

  A

  是下一个(a)

  一个

  是下一个(a)

   b

  A=ITER(ABCD) #字符串序列

  A

  是下一个(a)

  一个

  是下一个(a)

   b

  是下一个(a)

   c

  是下一个(a)

  迪

  3.如果提供了第二个参数sentinel,则第一个参数必须是可调用的对象。创建在调用__next__方法时调用的迭代对象,并在返回值等于sentinel值时引发StopIteration异常以终止迭代。

  类迭代器测试:

  def __init__(self):

  self.start=0

  self.end=10

  efget_next_value(self):

  电流=自我启动

  如果当前自结束:

  self.start=1

  否则:

  提升停止迭代

  返回当前状态

  Itertest=itertest(#实例化类

  A=ITER (# ITERTest。get _ next _ value,4) ITER测试. GET _ NEXT _ VALUE是一个sentinel值为4的可调用对象。

  A

  是下一个(a)

  0

  是下一个(a)

  一个

  是下一个(a)

  2

  是下一个(a)

  三

  三。范围

  语法:range(start,stop[),step])

  描述:

  1.range函数用于生成一个range对象。范围类型是表示整数范围的类型。

  2.您可以直接传递结束整数来初始化范围类型。默认值为0。结束整数应该如下所示

  大于0时,可以小于等于0,但小于等于0,生成的range对象实际上不包含元素。

  a=范围(5)

  a

  范围(0,5)

  镜头(a)

  五

  对于a中的x:print(x)

  0

  一个

  2

  三

  四

  B=range(0) #传入0,一个空的range对象

  镜头(b)

  0

  C=range(-5) #传入一个负数,一个空的range对象

  镜头(c)

  0

  3.范围类型可以通过传入起始整数和结束整数来初始化。生成的范围类型包含起始整数(含)和结束整数(不含)之间的所有整数。

  a=范围(1,5)

  a

  范围(1,5)

  对于a中的x:print(x)

  一个

  2

  三

  四

  4.传入一个起始整数和一个结束整数,也可以同时传入一个步长值来初始化范围类型。生成的范围类型包括起始整数(包括)和结束整数(不包括),它们由步长值过滤。

  a=范围(1,10,3)

  a

  范围(1,10,3)

  对于a中的x:print(x)

  一个

  四

  七

  5.初始化范围类型时,起始整数和结束整数遵循左臂右开的原则,即起始整数包含,结束整数不包含。

  a=范围(1,5)

  a

  范围(1,5)

  a中的x:print(x)#包含1,而不是5。

  一个

  2

  三

  四

  6.range接收的参数必须是整数,不能是浮点数和其他数据类型。

  7.range实际上是一种不可变的序列类型,可以进行取元素、切片等序列操作,但其中元素的值不能修改。

  a=范围(1,5)

  一个[0] #取元素

  一个

  [:-2] #切片

  范围(1,3)

  A[1]=2 #修改元素值

  回溯(最近一次呼叫):

  文件“”中的第1行

  a[1]=2

  type error:“range”对象不支持项分配

  四。地图

  语法:map(函数,iterable,)

  描述:

  1.该函数接受函数类型参数和迭代器的一个或多个参数,并返回迭代器。这个迭代器中的每个元素都是函数参数实例调用迭代器的结果。

  a=地图(顺序,“abcd”)

  a

  列表(a)

  [97, 98, 99, 100]

  2.当传入多个iterable对象时,函数的参数必须提供足够的参数,以保证每个iterable对象的同一索引的值能够正确地传入函数。

  A=map(ord, abcd , efg) #传入了两个iterable对象,所以传入的函数必须能接收两个参数,ord不能接收两个参数,所以报错。

  列表(a)

  回溯(最近一次呼叫):

  文件“”中的第1行

  列表(a)

  TypeError: ord()只接受一个参数(给定了2个)

  3.当传入多个迭代对象,并且它们的元素长度不一致时,生成的迭代器只达到最短的长度。

  定义f(a,b):

  返回a b

  A=map(f, abcd , efg) #选择的最短长度为3。

  列表(a)

  [ae , bf , cg]

  4.map函数是函数式编程的典型例子。

  动词(verb的缩写)活力

  语法:zip(*iterables)

  描述:

  1.函数是聚合每个传入的迭代器中相同位置的元素,返回一个新的元组类型迭代器。

  x=[1,2,3]

  y=[4,5,6]

  xy=zip(x,y)

  xy #xy的类型是zip类型。

  #导入可迭代

  从集合导入迭代

  is instance(xy,iterable) #确定对象是否可以迭代。

  真实的

  list(xy) #结果

  [(1, 4), (2, 5), (3, 6)]

  2.如果传递的迭代器的长度不一致,那么长度最短的迭代器将在迭代后停止聚合。

  X=[1,2,3] #长度3

  Y=[4,5,6,7,8] #长度5

  List(zip(x,y)) #取最小长度3

  [(1, 4), (2, 5), (3, 6)]

  3.如果只传入一个迭代器,则返回的单个元素元组的迭代器。

  列表(zip([1,2,3])

  [(1,), (2,), (3,)]

  4.如果没有参数传入,则返回一个空迭代器。

  列表(zip())

  []

  5.zip(*[iter(s)]*n)相当于调用zip(iter(s),iter(s),iter(s))。

  x=[1,2,3]

  列表(zip(*[x]*3))

  [(1, 1, 1), (2, 2, 2), (3, 3, 3)]

  列表(zip(x,x,x))

  [(1, 1, 1), (2, 2, 2), (3, 3, 3)]

  不及物动词过滤器

  语法:filter(function,iterable)

  描述:

  1.过滤功能用于过滤序列。过滤方法是使用传入函数调用循环序列的元素。如果函数计算的结果为真,则元素将被保留,否则,元素将被丢弃。

  A=list(range(1,10)) #定义序列

  a

  [1, 2, 3, 4, 5, 6, 7, 8, 9]

  If _ odd (x): #定义奇数判断函数

  return x%2==1

  List(filter(if_odd,a)) #过滤序列中的奇数

  [1, 3, 5, 7, 9]

  2.当函数参数传入None时,如果序列中的元素值为False,则自动丢弃。

  C=[ ,False, I ,{}] #定义序列

  c

  [ ,False, I ,{}]

  List(filter(None,c))# filter函数是None,它自动丢弃序列中的假值。空字符串、假值、空序列都是假值,所以丢弃。

  [我]

  七、列表式迭代

  L=[1,2,3,4,5]

  对于范围内的I(len(L)):

  L[i]=10

  打印(左)

  [11, 12, 13, 14, 15]

  L=[x ^ 10代表L中的x]

  打印(左)

  [21, 22, 23, 24, 25]

  八、DICT型迭代

  D=字典(a=1,b=2,c=3)

  对于排序后的k(D):print(k,D[k],end= )

  1 2 3

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

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