【问题标题】:Is there a way to make a string with sequential numbers without using a for-loop?有没有一种方法可以在不使用 for 循环的情况下制作带有序列号的字符串?
【发布时间】:2020-03-15 23:47:14
【问题描述】:

我想用这样的数字创建一个字符串:123456789
我可以使用for 循环轻松编写此代码。

x = ""
for i in range(1, 10):
    x += str(i)

但是,我想写这个没有明确的for 循环。
有没有创造性的方法来做到这一点?

【问题讨论】:

  • 任何不是x = '123456789' 的解决方案都将是某种循环,即使不是您可以看到的明确循环

标签: python python-3.x for-loop


【解决方案1】:

仅仅为了它,如果你真的想要,你可以使用递归函数:

def stringer(n):
    if n <= 1:
        return '1'

    return stringer(n-1) + str(n)

函数的作用是通过递归调用自身返回字符串123...n,每次递减n,直到达到1,然后在返回的过程中构建字符串。

如果调用为print(stringer(9)),则会给出:

123456789

那里没有循环,只是一个不错的调用堆栈

【讨论】:

    【解决方案2】:

    您可以按如下方式创建范围:

    rangeToConvert = range(1, 10)
    

    然后加入列表创建一个字符串。唯一的问题是 rangeToConvert 中的值是整数,因此您需要将它们转换为字符串才能使用连接函数。

    x = ''.join(map(str, rangeToConvert))
    

    X 在这种情况下是:

    '123456789'
    

    【讨论】:

      【解决方案3】:

      如果您希望使用 python 的 itertools 模块,您可以这样做:

      from itertools import takewhile, count
      x = ''
      x = ''.join(map(str, takewhile(lambda x: x < 10, count(1))))
      print(x)
      

      当上面的代码 sn -p 运行时,它会打印:

      123456789
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 2022-12-19
        • 1970-01-01
        • 2018-03-21
        • 2021-10-21
        相关资源
        最近更新 更多