在函数中使用可选参数来反转范围 python 3

Using optional arguments in a function to reverse a range python 3

我需要使用可选参数获取范围并通过使用主函数调用包含参数的函数来反转它。我的输出需要有原始范围,后面是相同的列表。我不知道如何将反转作为参数来获得我需要的输出。我只是按顺序打印了两次范围。我已经玩了几个小时,所以任何帮助将不胜感激。必须通过提供给 a_range 的可选参数来完成逆转,因此任何说不这样做的答案都对我没有帮助。

下面是我如何按顺序获取范围:

def a_range(max, step):
  return list(range(0,max,step))

def main():
  result = a_range(55,2)
  print(result)

main()

输出结果(如果格式有误请见谅):

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 
40, 42, 44, 46, 48, 50, 52, 54]

当我尝试添加反转同一个列表的第三个参数时:

def a_range(max, step, opt_arg = list(range(0,55,2))[::-1]):
    return list(range(0,max,step))
    return list(range(0,max,step,opt_arg)


def main():
    result = a_range(55,2)
    opt_arg = list(range(0,55,2))[::-1]
    print(result)
    other_result = a_range(55,2,opt_arg)
    print(other_result)


main()

我得到输出:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 
40, 42, 44, 46, 48, 50, 52, 54]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,  
42, 44, 46, 48, 50, 52, 54]

这正是我需要打印输出的方式,但第二次重复需要反转。

return 离开函数后,其他 returns 什么都不做。

您可以在返回前追加列表:

def a_range(maxx, step, reverse = False):
    k = list(range(0,maxx,step))
    return k+k[::-1] if reverse else k


print(a_range(10,2))

print(a_range(10,2,True))

如果将 reverse 设置为 True,则 k 的最后一个元素出现两次:

[0, 2, 4, 6, 8]
[0, 2, 4, 6, 8, 8, 6, 4, 2, 0]

您的代码中存在一些错误,主要错误是您的可选参数应为布尔标志。

下面是您可以如何实现它。

def prange(start, stop, step=1, reverse=False):
    fst = list(range(start, stop, step))
    if reverse:
        return (fst, list(reversed(fst)))
    else:
        return (fst,)

print(*prange(3, 6, reverse=True))

输出

[3, 4, 5] [5, 4, 3]