[英]How to make a list of N consecutive odd numbers starting from 1
我需要编写一个函数来生成一个包含 n 个奇数的列表,从 1 开始。如果输入是 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 = []
for i in range(1, 2*n, 2):
nums.append(i)
return nums
我们知道每隔一个数字都是奇数,所以我们必须“计数”到2*n
才能包括所有这些。 range
函数接受第三个参数,该参数指示在每次迭代中要跳过多少个元素。
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]
具有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]
range(..)
可以采用第三个参数,该参数是值每次迭代增量的step
。 具有前n 个奇数元素的列表的最后一项是2×n-1 ,因此我们可以将其写为:
def odd(n):
return list(range(1, 2*n, 2))
为什么不只是:
def odd(n):
return list(range(1, n * 2, 2))
或者用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])
文档: 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)
您也可以使用它:-
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]
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)
使用lambda
和numpy
。 在lambda
的帮助下,您可以在一行中编写函数并且numpy.arange
就像range()
但它返回一个数组:-
import numpy as np # Importing numpy module
odd = lambda num: np.arange(1,num*2+1,2)
odd(10)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.