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