python随机生成10个数_Python求“从1到100的整数中随机10个,和为100的组合有哪些?”…

  • Post author:
  • Post category:python


有一个这样的需求,要求从1到100的整数中随机取10个数,并且10个数的和要求是100,那么这样的组合有哪些?

直接上代码:

import itertools

[x for x in itertools.combinations(range(1, 101), 10) if sum(x) == 100]

当然,这样的列表推导,代码简洁优美,但是执行效率确实很低很低。为了提高执行效率,我们使用一个生成器(Generator)。

import itertools

combination = (x for x in itertools.combinations(range(1, 101), 10) if sum(x) == 100)

for c in combination:

print(c)

这样,就可以快速的把代码打印出来了,比单纯的列表推导快多了。

注意:使用生成器,我们把结果赋值给变量combination,这个变量仅仅能被调用一次,第二次的时候,变量已经变为空值。