我有一个最多包含 6 个 float 的特定列表,我需要一个函数来选择这 6 个数字中的哪一个相加后会产生给定间隔内的数字,例如:29 < Sum < 31.
list = [0.96, 6.72, 4.8, 7.68, 24.96, 6.72]
min_number = 29
max_number = 31
如果可能的话,我还希望能够将生成的 float 移至新列表,并将其余 float 移至另一个列表。
最佳答案
一个可能的解决方案是生成列表的所有 n 个长度组合,其中:
1 < n < len(list)
以下代码:
import itertools
mylist = [0.96, 6.72, 4.8, 7.68, 24.96, 6.72]
min_number = 29
max_number = 31
all_perms = []
for index in range(len(mylist)):
perm = itertools.combinations(mylist,index)
for i in perm:
all_perms.append(i)
for i in all_perms:
if min_number < sum(i) < max_number:
print(i)
打印独特的组合:
(4.8, 24.96)
(0.96, 4.8, 24.96)
关于python-3.x - 是否有一个函数可以查找列表中哪些 float 加起来等于特定间隔内的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57906226/