来自 nosklo 在什么是迭代块中列表的最“pythonic”方式中的回答?返回线在做什么:
def chunker(seq, size):
return (seq[pos:pos + size] for pos in range(0, len(seq), size))
我知道输出会是什么,我只想知道这是如何工作的。
编辑:添加用例以希望消除混淆。
我正在使用定义的函数读入一个未知大小的列表并从中抓取 8 个对象,通过某些东西运行这 8 个对象,然后抓取下一个 8 等等,直到列表完成。nosklo 帖子中的用例:
animals = ['cat', 'dog', 'rabbit', 'duck', 'bird', 'cow', 'gnu', 'fish']
for group in chunker(animals, 3):
print group
# ['cat', 'dog', 'rabbit']
# ['duck', 'bird', 'cow']
# ['gnu', 'fish']
(<expr> for <var> in <itr>)
是一个生成器表达式。相当于
def anon():
for <var> in <itr>:
yield <expr>
anon()
seq[<start>:<stop>]
是切片符号。对于列表,它将使用该范围内的元素创建一个新的列表对象。应该和[seq[i] for i in range(<start>, <stop>)]
.
range(<start>, <stop>, <step>)
是内置的范围。生成一个可迭代的整数。
len(seq)
长度内置。与 相同seq.__len__()
,它应该获取对象的“长度”。由对象决定这意味着什么,但对于像list
它这样的序列类型应该是元素的数量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句