一行代表几乎冗余的列表理解

sun*_*ots 4 python list-comprehension python-3.x

考虑两个列表推导gamma和delta几乎冗余的代码.区别在于切片名单alpha和beta,即

gamma = [alpha[i:i+30] for i in range(0,49980,30)]
delta = [beta[i:i+30] for i in range(0,49980,30)]
Run Code Online (Sandbox Code Playgroud)

是否有一种pythonic方式将其写成一个衬垫(比方说gamma,delta = ...)?

我还有一些其他类似的代码,它们本质上是相似的,我想简化代码的看似冗余.

Joe*_*don 8

虽然单行list-comprehensions非常有用,但它们并不总是最佳选择.所以在这里,因为你正在对两者进行相同的分块lists,如果你想改变分块,你将不得不修改两条线.

相反,我们可以使用function任何给定的块list,然后使用单行分配块gamma和delta.

def chunk(l):
    return [l[i:i+30] for i in range(0, len(l), 30)]

gamma, delta = chunk(gamma), chunk(delta)
Run Code Online (Sandbox Code Playgroud)