[英]Python: double nested list comprehension
我正在编写一个函数,该函数将输入采样到另一个具有 5 个输入的数值函数,每个输入都有给定的最小值和最大值。 它应该导致 num_samples^5 个不同的输入组合。
我想让这段代码更短,以便不再需要显式索引 0 到 4。
num_inputs = 5
num_samples = 10.0
sampled_inputs = [[a, b, c, d, e]
for a in sample_range(mins[0], maxes[0], num_samples)
for b in sample_range(mins[1], maxes[1], num_samples)
for c in sample_range(mins[2], maxes[2], num_samples)
for d in sample_range(mins[3], maxes[3], num_samples)
for e in sample_range(mins[4], maxes[4], num_samples)]
其中 sample_range 是一个函数,它在 min 和 max 之间对 num_samples 数字进行采样。
有什么我还没有看到的技巧吗? 提前致谢。
你想在这里得到笛卡尔积吗?
如果是这样,请使用itertools.product
。
import itertools
lists = [sample_range(mins[i], maxes[i], num_samples) for i in range(4)]
prod = itertools.product(*lists)
for elem in prod:
print(elem)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.