Pairwise crossproduct in Python
本问题已经有最佳答案,请猛点这里访问。
如何从Python中任意长的列表中获取交叉产品对的列表?
例子1 2 | a = [1, 2, 3] b = [4, 5, 6] |
如果您使用的是(至少)python2.6,那么您需要itertools.product。
1 2 3 4 5 6 7 | >>> import itertools >>> a=[1,2,3] >>> b=[4,5,6] >>> itertools.product(a,b) <itertools.product object at 0x10049b870> >>> list(itertools.product(a,b)) [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)] |
既然你要了一份清单:
1 | [(x, y) for x in a for y in b] |
但是,如果您只是通过使用生成器来循环这些内容,则可以避免列表的开销:
1 | ((x, y) for x in a for y in b) |
在
使用生成器不需要ITertools,只需:
1 2 3 4 | gen = ((x, y) for x in a for y in b) for u, v in gen: print u, v |