python中什么是迭代器,python中迭代器和生成器的区别

  python中什么是迭代器,python中迭代器和生成器的区别

  定义分区(n,可迭代):

  p=izip _ longest(*([ITER(iterable)]* n))

  r=[]

  对于p中的x:

  打印(x)#我加了这个

  s=集合(x)

  放弃(无)

  r.append(列表)

  返回r

  这其实是SO上的招聘启事,而且是新手。我觉得很有意思。因此,您会得到以下输出:

  分区(5,L)

  (1,2,3,4,无)

  Out[86]: [[1,2,3,4]]

  这让我很困惑,因为我认为izip_longest(*([iterator(iterable)]* n))会在n个相同迭代器的列表上运行izip _ longest函数,所以我原本预计输出是(1,1,1),1,1)然后是(2,2,2,2)

  这个问题的简短版本是这一行:

  p=izip _ longest(*([ITER(iterable)]* n))

  解析它我会想[iter(iterable)] * n创建一个长度为n的相同iterables的列表,它们都指向同一个东西——这是它在命令行上做的事情,但根据上面打印的输出,它在这里似乎不是它的角色。

  另外,我觉得开头的*是最长的(* …因为列表长度未知但我觉得完全没有意义。函数调用中的第一个*符号是什么?似乎只是表示一个未知长度的参数列表.

  所以到了最后,我完全迷失了。有人能告诉我这个语法吗?

  非常感谢您的任何投入!

  感谢各位有用的回答。我不确定我是否在寻找答案或问题,但在我看来,这种列表理解将对列表和元组做同样的事情(我意识到迭代器也适用于字典、自定义类和其他东西.)

  [L[I * n:(I 1)* n]for I in range(int(ceil(len(L)/float(n))))]

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

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