【发布时间】:2012-03-21 11:47:14
【问题描述】:
不知道如何四处寻找,但从 itertools 函数 izip_longest 可以做到这一点:
izip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
我希望一个可迭代的库能够做到这一点:
izip_longest_better('ABCDE', 'xy') --> Ax By Cx Dy Ex
最好用于任意数量的可迭代对象,用于生成数百万个组合。我会自己写,但我想我会问,因为我确信我自己的不会很 Python。
太棒了,这是我没有尝试过的循环。我还能够通过在数组而不是迭代器上嵌套 for 循环来获得一些工作,但这要好得多。我最后用的是这个处理类似于 izip"
编辑: 结束了
def izip_longest_repeat(*args):
如果参数:
列表 = 排序(参数,键 = len,反向 = 真)
结果 = list(itertools.izip(*([lists[0]] + [itertools.cycle(l) for l in lists[1:]])))
别的:
结果 = [()]
返回结果
【问题讨论】:
标签: python