给定列表大小,如何将其factorial作为列表返回?

时间:2017-03-26 00:52:09

标签: python-3.x list factorial

我试图编写一个接受列表大小作为参数的函数,并返回一个新的列表,其中的数字基本上是列表大小的阶乘。但是,我不能使用factorial()函数,因为它抛出"未定义"错误。

输入/输出示例:

  

puzzle = [[1,2],[2,2]],size = 2 by 2(2),所有数字都可能new_list = [1,2]

     

puzzle = [[1],[2],[3]],size = 3 by 3(3),所有数字都可能new_list = [1,2,3]

我当前的代码(不工作):

def get_valid_numbers(size):
    num=size
    valid_list=[]
    return valid_list.append(num*factorial(num-1))

我知道这不正确,但我不确定如何修复它。

1 个答案:

答案 0 :(得分:0)

这是你正在寻找的吗?

def get_valid_num(size):
    valid_list = list(range(1, size + 1))
    return valid_list
print("All numbers possible: ", get_valid_num(5))

请注意,此代码不输出阶乘,而是由size参数限定的连续整数列表(+ 1作为range()函数的最终值不包括在内)。

但是,如果您确实要创建列表并使用n-size的阶乘填充它们,则可能需要按如下方式实现:

def factorial(size):
    if size <= 2:
        return size
    else:
        size = size * factorial(size - 1)
    return size

# This time you build a list of 120 elements (5! = 120)
def get_valid_num(size):
    valid_list = list(range(1, factorial(size) + 1))
    return valid_list

print("All numbers possible: ", get_valid_num(5))

最后,您可能希望为每个元素创建一个包含计算因子的列表。

def factorial(size):
    if size <= 2:
        return size
    else:
        size = size * factorial(size - 1)
    return size

# Populate the list with the value of each factored element
def get_valid_num(size):
    valid_list = list(range(1, size + 1))
    factorials = [factorial(item) for item in valid_list]
    return factorials

print("All numbers possible: ", get_valid_num(5))