Python中的奇数列表

时间:2019-07-13 10:14:24

标签: python

我需要编写一个函数,该函数生成从1开始的n个奇数的列表。如果输入为12,则输出应为[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]。如果输入为10,则输出应为[1、3、5、7、9、11、13、15、17、19]

这是我到目前为止所得到的。我什至不知道我是否会朝正确的方向

def odd(n):
    nums = list()
    for i in range(1, n + 1):
        nums.append(i)
    return nums

10 个答案:

答案 0 :(得分:1)

几乎..

def odd(n):
    nums = []
    for i in range(1, 2*n, 2):
        nums.append(i)
    return nums

我们知道每隔一个数字都是奇数,因此我们必须对“ 2*n”进行“计数”以包括所有数字。 range函数采用第三个参数,该参数指示每次迭代中要跳过多少个元素。

答案 1 :(得分:1)

def odd(n):
    return list(range(1, 2*n, 2))

print(odd(10))
print(odd(12))

输出:

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]                                                                                                                           
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]    

答案 2 :(得分:1)

带有list comprehenssion的代码:-

def odd(n):
    return [num for num in range(1, n*2+1,2)]
odd(10)

输出

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

答案 3 :(得分:1)

使用lambdanumpy。借助lambda,您可以在一行中写函数 AND numpy.arange就像range(),但它返回一个数组:-

import numpy as np  # Importing numpy module
odd = lambda num: np.arange(1,num*2+1,2)   
odd(10)

答案 4 :(得分:0)

range(..)可以采用第三个参数,即step值在每次迭代中增加的数量。列表中具有前 n 个奇数元素的最后一项是 2×n-1 ,因此我们可以这样写:

def odd(n):
    return list(range(1, 2*n, 2))

答案 5 :(得分:0)

为什么不只是:

def odd(n):
    return list(range(1, n * 2, 2))

答案 6 :(得分:0)

或与numpy

import numpy as np
def odd(n):
   return np.arange(1, 2*n, 2)


odd(10) -> array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19])
odd(12) -> array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23])

答案 7 :(得分:0)

文档: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.arange.html

import numpy as np

def odd(n):
   return np.arrange(1,n*2,2)

答案 8 :(得分:0)

您还可以使用此功能:-

def odd(n):
    nums = []
    for i in range(1, n*2+1):
        if i%2==0:
            pass
        else:
            nums.append(i)
    return nums
odd(10)

输出

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

答案 9 :(得分:0)

def f(n):
    return[i for i in range(1,n*2,2)]

def E(n):
    list=[]
    list.extend(i for i in range(1,2*n,2))
    return(list)