Python izip_最长,使用循环代替填充值
不确定如何查找,但从Python izip_最长,使用循环代替填充值,python,Python,不确定如何查找,但从itertools函数执行以下操作: izip_最长('ABCD','xy',fillvalue='-')-->Ax By C-D- 我希望iterable图书馆能做到这一点: izip\u longest\u better('ABCDE','xy')-->Ax By Cx Dy Ex 最好用于任意数量的iterables,用于生成数百万个组合。我会写我自己的,但我想我会问,因为我肯定我自己的不会很像蟒蛇 太棒了,这是我从未尝试过的循环。我还能够通过在数组上嵌套循环而不是迭代
itertools
函数执行以下操作:
izip_最长('ABCD','xy',fillvalue='-')
-->Ax By C-D-
我希望iterable图书馆能做到这一点:
izip\u longest\u better('ABCDE','xy')
-->Ax By Cx Dy Ex
最好用于任意数量的iterables,用于生成数百万个组合。我会写我自己的,但我想我会问,因为我肯定我自己的不会很像蟒蛇
太棒了,这是我从未尝试过的循环。我还能够通过在数组上嵌套循环而不是迭代器来实现一些功能,但这要好得多。我最后用它来处理类似izip的问题” 编辑: 结果是 def izip_longest_repeat(*args): if args: lists = sorted(args, key=len, reverse=True) result = list(itertools.izip(*([lists[0]] + [itertools.cycle(l) for l in lists[1:]]))) else: result = [()] return result def izip_最长_重复(*参数): 如果参数为: 列表=已排序(args,key=len,reverse=True) 结果=列表(itertools.izip(*[lists[0]]+[itertools.cycle(l)表示列表中的l[1:]])) 其他: 结果=[()] 返回结果 像这样的
>>> import itertools
>>>
>>> a = 'ABCDE'
>>> b = 'xy'
>>>
>>> list(itertools.izip_longest(a, b, fillvalue='-'))
[('A', 'x'), ('B', 'y'), ('C', '-'), ('D', '-'), ('E', '-')]
>>> list(itertools.izip(a, itertools.cycle(b)))
[('A', 'x'), ('B', 'y'), ('C', 'x'), ('D', 'y'), ('E', 'x')]
还有任意数量的iterables变体(假设您不希望第一个参数循环,并且您对itertools.product不感兴趣):
对于要使用的Python 3 由于
izip_longest
已被弃用
import itertools
list = list(itertools.zip_longest('ABCD', 'xy', fillvalue='-'))
print(list) // --> Ax By C- D-
太棒了,这是一个我没有尝试过的循环。我也能够通过在数组上嵌套循环而不是迭代器来获得一些效果,但这要好得多。我最终使用的是这个来处理类似于izip的问题。
lists=sorted(args,key=len,reverse=True)
result=list(itertools.izip(*[lists[0]]+[itertools.cycle(l)for l in list[1:]])
从头在某些元素中的列表生成字典时非常重要!
import itertools
list = list(itertools.zip_longest('ABCD', 'xy', fillvalue='-'))
print(list) // --> Ax By C- D-