【问题标题】:Recursive one liner function to print numbers from N to 1 [duplicate]递归一个线性函数以打印从 N 到 1 的数字 [重复]
【发布时间】:2020-05-08 14:43:28
【问题描述】:
def recur(n):
    print(n)
    if n>1:
        recur(n-1)

如何将其转换为仅行。我找不到使用逻辑的方法 recur = lambda x: print(x) if.......

我什至不会使用

func = lambda x: [print(i) for i in range(x,0,-1)]

【问题讨论】:

标签: python python-3.x


【解决方案1】:

如果希望数字打印在同一行,可以使用打印函数的end=参数:

printDown = lambda n: print(n,end=" ") or printDown(n-1) if n>1 else print(n)

printDown(10)

10 9 8 7 6 5 4 3 2 1

如果您希望它们在单独的行中:

printDown = lambda n: print(n) or (printDown(n-1) if n>1 else None)

printDown(10)

10
9
8
7
6
5
4
3
2
1

【讨论】:

    【解决方案2】:

    一种可能的递归 lambda:

    recur = lambda n: [print(n), recur if n>1 else lambda x: None][1](n-1)
    
    recur(10)
    

    打印:

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

    【讨论】:

      【解决方案3】:

      在 Python >= 3.8 中,您可以完全在一行中完成:

      print(*(x := lambda n: [n]+x(n-1) if n else [])(10), sep='\n')
      10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      

      请注意,这也不会滥用对副作用的理解或表达式。 x 现在仍可用于创建通用列表:

      x(5)
      # [5, 4, 3, 2, 1]
      

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 2015-05-07
        • 1970-01-01
        • 2018-08-18
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多