我试图生成列表排序与更换对(即需求(0.1, 0.1)
,(0.1, 0.2)
并(0.2, 0.1)
),其履行他们的总和的条件<= max_sum
在Python。例如,给出max_sum=1
和列表:
[0, 0.1, 0.2, ..., 0.9, 1.0]
我想产生一个包含以下内容的列表:
[(0, 0), (0, 0.1), ..., (0, 0.9), (0, 1.0), (0.1, 0), (0.1, 0.1), ..., (0.1, 0.8), (0.1, 0.9), (0.2, 0), (0.2, 0.1), ...]
但不能 (0.1, 1.0)
等。
这是一个可能效率低下且难看的解决方案,存在一些问题,因为if语句有时无法正确解析:
alphas = [0., .1, .2, .3, .4, .5, .6, .7, .8, .9, 1.]
max_sum = 1
def get_pairs(alphas, max_sum)
for a in alphas:
for b in alphas:
if a + b <= max_sum:
yield (a, b)
如果订单很重要,这意味着您将同时拥有(0, 0.2)
和(0.2,0)
,那么可以尝试以下操作:
L = [round(x*0.1, 2) for x in range(0, 10)]
print([(x,y) for x in L for y in L if x + y <= 1])
输出:
[(0.0, 0.0), (0.0, 0.1), (0.0, 0.2), ... (0.8, 0.2), (0.9, 0.0), (0.9, 0.1)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句