我有以下整数列表:
prime_factors = [2,3,5,7,11,13,17,19,23]
将连续整数的每个子集的元素相乘的有效方法是什么?
为了进一步说明,我需要输出包括以下乘法的结果:2*3
、3*5
、2*3* 5
, 13*17*19
, 7*11*13*17*19
, 2*3*5*7*11*13 *17*19*23
和所有其他可能的连续素数组合。输出不应包括 2*5
或 5*7*13
等。
最佳答案
您可以使用 itertools.accumulate
执行此操作.
from itertools import accumulate
from operator import mul
def consec_mult(data):
for i in range(len(data) - 1):
it = accumulate(data[i:], mul)
# Skip the single item
next(it)
yield from it
# Test
prime_factors = [2, 3, 5, 7, 11]
print(*consec_mult(prime_factors))
输出
6 30 210 2310 15 105 1155 35 385 77
或者如果您希望结果按数字顺序排序:
print(*sorted(consec_mult(prime_factors)))
输出
6 15 30 35 77 105 210 385 1155 2310
关于python - 将连续整数列表的每个可能子集中的整数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010930/