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

问题描述 投票:0回答:1

我正在尝试编写一个接受列表大小作为参数的函数,并返回一个新的列表,其中的数字基本上是列表大小的阶乘。但是,我不能使用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))

我知道这不正确,但我不确定如何解决它。

python-3.x list factorial
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.