我有以下代码
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 的方式来做到这一点?
我有以下代码
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 的方式来做到这一点?
from itertools import product
A = [(X(x), Y(y), Z(z)) for x, y, z in product(range(N), repeat=3)]
你可以这样做:
import itertools
res = [X(each[0]), Y(each[1]), Z(each[2]) for each in itertools.combinations(N, 3)]
这将为您提供所有独特的组合。你可以在这里找到更多关于它的信息。
继续编码:)
由于 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))
祝你好运