3

我有以下代码

A = [(X(x), Y(y), Z(z)) for x in range(N) for y in range(N) for z in range(N)]

它做了我想要的——根据我的函数 X、Y 和 Z 生成一个表示笛卡尔坐标的元组列表——但它不是很漂亮。我试过

A = [(X(x), Y(y), Z(z)) for x, y, z in range(N)]

但这没有用。有没有更优雅和 Pythonic 的方式来做到这一点?

4

3 回答 3

5
from itertools import product
A = [(X(x), Y(y), Z(z)) for x, y, z in product(range(N), repeat=3)]
于 2013-04-05T11:13:01.730 回答
-1

你可以这样做:

import itertools

res = [X(each[0]), Y(each[1]), Z(each[2]) for each in itertools.combinations(N, 3)]

这将为您提供所有独特的组合。你可以在这里找到更多关于它的信息。

继续编码:)

于 2013-04-05T12:08:46.007 回答
-2

由于 x,y 和 z 具有相同的值,您可以这样做:

A = [(X(x), Y(x), Z(x)) for x, in range(N)]

您还可以使用地图功能:

f = lambda x : (X(x), Y(x), Z(x))
map(f, range(N))

祝你好运

于 2013-04-05T11:27:38.920 回答