社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

奇数python列表

Jason Walker • 5 年前 • 1715 次点击  

我需要写一个函数来生成一个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 = list()
    for i in range(1, n + 1):
        nums.append(i)
    return nums
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46216
 
1715 次点击  
文章 [ 9 ]  |  最新文章 5 年前
user11779486
Reply   •   1 楼
user11779486    5 年前

lambda numpy . 借助于 兰姆达 你可以一行写函数 numpy.arange 就像 range() 但它返回一个数组:

import numpy as np  # Importing numpy module
odd = lambda num: np.arange(1,num*2+1,2)   
odd(10)
user11779291
Reply   •   2 楼
user11779291    5 年前

你也可以使用这个:

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]
Aron
Reply   •   3 楼
Aron    5 年前

文档: 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)
L3n95
Reply   •   4 楼
L3n95    5 年前

或与 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])
U10-Forward
Reply   •   5 楼
U10-Forward    5 年前

为什么不:

def odd(n):
    return list(range(1, n * 2, 2))
Willem Van Onsem
Reply   •   6 楼
Willem Van Onsem    5 年前

range(..) 可以取第三个参数,即 step 该值在每次迭代中递增的量。列表的最后一项 n 奇数元素,is 2×N-1 ,所以我们可以这样写:

def odd(n):
    return list(range(1, 2*n, 2))
user11779307
Reply   •   7 楼
user11779307    5 年前

代码与 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]
bart
Reply   •   8 楼
bart    5 年前
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]    
thebjorn
Reply   •   9 楼
thebjorn    5 年前

几乎。。

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

我们知道每一个数字都是奇数,所以我们必须“数”到 2*n 包括所有这些。这个 range 函数采用第三个参数,指示在每个迭代中跳过多少个元素。