首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的成对叉积

Python中的成对叉积
EN

Stack Overflow用户
提问于 2010-03-30 05:27:39
回答 3查看 86.6K关注 0票数 124

如何从Python中任意长的列表中获得叉积对列表?

示例

代码语言:javascript
复制
a = [1, 2, 3]
b = [4, 5, 6]

crossproduct(a,b)应该会生成[[1, 4], [1, 5], [1, 6], ...]

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-30 05:29:03

如果你使用的是Python2.6(至少),那么你正在寻找itertools.product

代码语言:javascript
复制
>>> 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)]
票数 166
EN

Stack Overflow用户

发布于 2010-03-30 05:30:37

既然你要了一份清单:

代码语言:javascript
复制
[(x, y) for x in a for y in b]

但是,如果您只是通过使用生成器遍历这些列表,则可以避免列表的开销:

代码语言:javascript
复制
((x, y) for x in a for y in b)

for循环中的行为相同,但不会导致创建list

票数 92
EN

Stack Overflow用户

发布于 2013-11-07 17:39:34

使用生成器不需要itertools,只需:

代码语言:javascript
复制
gen = ((x, y) for x in a for y in b)

for u, v in gen:
    print u, v
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2541401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档