Python “我可以使用什么功能?”;减少;在这个代码中?

Python “我可以使用什么功能?”;减少;在这个代码中?,python,Python,我试图为值“numer”找到不同的因子集,但它给了我一个错误,即: def factors(numer): return set(reduce(list.__add__, ([i, numer//i] for i in range(1, int(numer**0.5) + 1) if numer % i == 0))) 我可以用什么替换reduce以使代码正常工作?您需要在python3中导入它: NameError: name 'reduce' is not defined

我试图为值“numer”找到不同的因子集,但它给了我一个错误,即:

def factors(numer):    
    return set(reduce(list.__add__, ([i, numer//i] for i in range(1, int(numer**0.5) + 1) if numer % i == 0)))

我可以用什么替换reduce以使代码正常工作?

您需要在python3中导入它:

NameError: name 'reduce' is not defined
一旦你这样做了,它就会起作用:

from functools import reduce
您也可以使用
itertools.chain

In [5]: from functools import reduce

In [6]: factors(10)
Out[6]: {1, 2, 5, 10}
或者通过在每个元组中的元素上添加另一个循环来展平:

from itertools import chain
def factors(numer):
    return set(chain.from_iterable((i, numer//i) for i in range(1, int(numer**0.5) + 1) if numer % i == 0))

如果您使用的是python 3,那么可以在
functools
模块中找到reduce。好的,谢谢,我在这方面遇到了困难。我很感激你的帮助help@dirtydan,不用担心,在任何情况下都不需要减少
def factors(numer):
    return set((j for i in range(1, int(numer**0.5) + 1) if numer % i == 0 for j in (i, numer//i)))