我有一个数字列表供输入,例如
671.00
1,636.00
436.00
9,224.00
我想生成所有可能的和,并用一种方法标识输出,例如:
^{pr2}$我想用Python来做 我目前的限制是: a) 我现在正在学习python(这是想法的一部分) b) 我将不得不使用python2.5.2(没有intertools)
我想我找到了一段可能有帮助的代码:
def all_perms(str):
if len(str) <=1:
yield str
else:
for perm in all_perms(str[1:]):
for i in range(len(perm)+1):
#nb str[0:1] works in both string and list contexts
yield perm[:i] + str[0:1] + perm[i:]
(来自these guys)
但我不知道如何在我的求婚中使用它。 有人能告诉我一些提示和帮助代码吗?在
干杯
f
除了一个给定的“列表”之外,返回所有的子集合列表。在
现在您只需编写一个简短的函数
^{pr2}$doit
来输出:排列是指将一组有序的事物集合起来,并将这些事物移动(即改变顺序)。你的问题是关于你清单上的东西的组合。在
现在,枚举组合的一种简单方法是将列表中的条目映射到数字中的位。例如,假设如果位0被设置(即1),那么数字}成员的所有可能组合,包括空的(}(
lst[0]
参与组合,如果位1被设置,那么lst[1]
参与组合,等等。这样,范围0 <= n < 2**(len(lst))
中的数字标识{n = 0
)和整个{n = 2**(len(lst)) - 1
)的所有可能组合。在您只需要2个或更多项的组合,即只需要那些在二进制表示中至少有两个非零位的组合id。以下是如何识别这些:
下一步是提取由组合id标识的列表成员的组合。由于列表理解的强大功能,这很容易做到:
^{pr2}$现在让我们制作一个生成所有和及其字符串表示的生成器:
最后,让我们使用它:
使用itertools(Python>;=2.6)将是:
相关问题 更多 >
编程相关推荐