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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。