簡體   English   中英

如何制作從1開始的N個連續奇數的列表

[英]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)

使用lambdanumpy 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM