Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python list.reverse()未提供正确的输出_Python_List_Reverse - Fatal编程技术网

Python list.reverse()未提供正确的输出

Python list.reverse()未提供正确的输出,python,list,reverse,Python,List,Reverse,问题: 编写一个函数,该函数接受两个正整数a和b(a小于b),并返回一个列表,该列表包含a和b之间的所有奇数(包括a和b,如果适用) 节目: def odd(a,b): c=[] for i in range(a,b+1): if i%2==1: c.append(i) c.sort() c.reverse() return c 澄清: 只有在使用c.sort并将其反转时,我

问题: 编写一个函数,该函数接受两个正整数a和b(a小于b),并返回一个列表,该列表包含a和b之间的所有奇数(包括a和b,如果适用)

节目:

def odd(a,b):
    c=[]
    for i in range(a,b+1):
        if i%2==1:
            c.append(i)
            c.sort()
            c.reverse()
        return c
澄清: 只有在使用c.sort并将其反转时,我才能获得正确的输出。但是
c.reverse
应该给出正确的输出,对吗?当我“不排序”并反转列表时,输出列表的顺序不正确,尽管元素以排序顺序进入列表。谁能解释一下原因吗?

list.append()
可以在循环后调用,而不是循环的每次迭代。return语句也应该在循环之外

def odd(a,b):
    c=[]
    for i in range(a,b+1):
        if i%2==1:
            c.append(i)
    c.reverse()
    return c

print(odd(1,10))

# Returns   [9, 7, 5, 3, 1]

其他人指出了你的错误。我想提供一个更高效的解决方案:

def odd(a,b):
    return list(range(b if b%2 else b-1,a-1,-2))

print(odd(1,10))
print(odd(1,11))
结果:

[9, 7, 5, 3, 1]
[11, 9, 7, 5, 3, 1]

它使用
范围
,以2步反向,并确保以奇数开头。

请提供提示:理论上需要调用
反向
多少次?您实际调用它多少次?您可以使用
c.sort(reverse=True)
BTW.并在最后执行,而不是在循环中执行,因为这样效率很低。另外,您的项目已经排序,所以反向将是您发布的代码在列表中放置一个数字并返回该元素列表。请发布实际产生问题的代码。哦,我的糟糕!谢谢Kevin和JeanThanks TruBlu我收到了太棒了!谢谢@Jean-François Fabre