是否有更多pythonic方法使用列表推导循环多个类似的索引?

时间:2013-04-05 11:11:39

标签: python list list-comprehension

我有以下代码

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的方式来做到这一点?

3 个答案:

答案 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))
祝你好运