python拆分参数列表_Python:使用itertools将列表拆分为组的参数
这是一个关于使用标准库的快速代码的相对优点的问题,它使用的是标准库,但与手工编写的替代程序相比,它是模糊的(至少对我来说是这样)。在这个thread(以及它复制的其他函数)中,将列表拆分为组的“Pythonic”方法似乎是使用itertools,如下面代码示例中的第一个函数(对ΤΖΩΤΖΙΟΥ稍作修改)。在
我喜欢第二个函数的原因是我能理解它的工作原理,如果我不需要填充(比如把DNA序列转换成密码子),我可以在瞬间从记忆中复制它。在
使用itertools的速度更好。特别是如果我们不想返回一个列表,或者我们想填充最后一个条目,itertools会更快。在
还有哪些支持标准库解决方案的论据?在from itertools import izip_longest
def groupby_itertools(iterable, n=3, padvalue='x'):
"groupby_itertools('abcde', 3, 'x') --> ('a','b','c'), ('d','e','x')"
return izip_longest(*[iter(iterable)]*n, fillvalue=padvalue)
def groupby_my(L, n=3, pad=None):
"groupby_my(list('abcde'), n=3, pad='x') --> [['a','b','c'], ['d','e','x']]"
R = xrange(0,len(L),n)
rL = [L[i:i+n] for i in R]
if pad:
last = rL[-1]
x = n - len(last)
if isinstance(last,list):
rL[-1].extend([pad] * x)
elif isinstance(last,str):
rL[-1] += pad * x
return rL
时间安排:
^{pr2}$
编辑:我会在这里更改函数名(见Alex的答案),但是有太多的函数名我决定发布这个警告。在