如何使用python[无循环样式]查找奇数正整数?

2024-10-02 02:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决的问题相当简单:编写一个函数q2(n),它将返回n个奇数正整数。例如,q2(3)应该返回[1,3,5]

正如您在下面的代码中所看到的,我已经使用for循环解决了这个问题。然而,有一个问题提示说“尽量不要使用循环”。所以问题是:如何在不使用循环的情况下做到这一点?

以下是我的版本:

def q2(n):
    num100 = list(range(100))
    odd = []

    for i in num100:
        if (i%2) != 0:
            odd.append(i)
    result = odd[0:n]

    return result

Tags: 函数代码in版本fordef情况range
3条回答

您还可以使用python内置的filter函数

>>> list(filter(lambda x: x%2 != 0, range(10*2)))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

您可以使用recursion

def q2(n):
    result = []
    if n:
        result = result + q2(n - 1)
        result.append(n * 2 - 1)

    return result


result = q2(3)
print(result) # output : [1, 3, 5]

This是开始学习递归的好资源

您应该使用列表理解,但它也是一种循环

def q2(n):
        return [number for number in range(n) if number%2!=0]

相关问题 更多 >

    热门问题