Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
去年关闭。
我有一组元组:
我可以得到总和低于某个特定值的中间(或第一个或最后一个)值的组合:
但是我希望能够跟踪这些值来自哪个元组,所以我不仅要返回具有适当总和的值集,还想返回这些值来自的整个元组。不知道该怎么做。
从那里的打印输出是
这似乎是正确的。
我的例程和您的例程之间的主要区别是,我省略了
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
去年关闭。
我有一组元组:
(1, 3, 6)
(5, 2, 4)
...
(8, 1, 9)
我可以得到总和低于某个特定值的中间(或第一个或最后一个)值的组合:
def func(tuples, maxVal):
values = [i[1] for i in tuples]
result = [seq for s in range(len(values), 0, -1) for seq in itertools.combinations(values, s) if sum(seq) <= maxVal]
print(result)
但是我希望能够跟踪这些值来自哪个元组,所以我不仅要返回具有适当总和的值集,还想返回这些值来自的整个元组。不知道该怎么做。
最佳答案
怎么样
from itertools import combinations
def func(tuples, maxVal):
return [seq for s in range(len(tuples), 0, -1)
for seq in combinations(tuples, s)
if sum(t[1] for t in seq) <= maxVal]
tuplesset = {(1, 3, 6), (5, 2, 4), (8, 1, 9)}
print(func(tuplesset, 4))
从那里的打印输出是
[((1, 3, 6), (8, 1, 9)), ((5, 2, 4), (8, 1, 9)), ((1, 3, 6),), ((5, 2, 4),), ((8, 1, 9),)]
这似乎是正确的。
我的例程和您的例程之间的主要区别是,我省略了
values
变量(元组中的中间值),并使用表达式sum(t[1] for t in seq)
而不是sum(seq)
来求和元组的中间值。为了清晰起见,我还把您的一条长线分成多条短线,以便更好地遵循PEP8。关于python - 有没有一种方法可以获取一组元组的组合? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51409422/
10-16 04:22