我需要编写一个函数,该函数生成从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
答案 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)
使用lambda
和numpy
。借助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)