【问题标题】:How to generate a number sequence 1111222233334444....9999...?如何生成数字序列 1111222233334444....9999...?
【发布时间】:2023-01-09 17:51:39
【问题描述】:

我想生成111122223333....一个数字序列,每个数字出现相同的次数,直到某个数字为止。


我使用python for循环生成数列,但是当结束数为7000时,花费了太多时间。

import pandas as pd

startNum = 1
endNum = 7000
sequence = []
for i in range(endNum):  
   for j in range(endNum):
       sequence.append(i)
print(i)

那么我应该怎么做才能减少时间并获得我的序列?不管方法,不包括excel。谢谢!

我想获得号码序列 111122223333

【问题讨论】:

  • 你打算用这个序列做什么? generator 在这里可能非常有用。我怀疑序列生成需要塔阿特很长,但序列的打印是实际的瓶颈。
  • @luk2302 他甚至不打印序列。在我相当强大的笔记本电脑上生成列表需要 3.8 秒......
  • 你是绝对正确的,读错了print。其他观点仍然存在......是的,生成 50M 条目将需要一些时间。

标签: python numbers sequence


【解决方案1】:

我不知道为什么但是

endnum = 7
''.join([f"{str(i)*4}" for i in range(endnum)])

print(result)

结果

0000111122223333444455556666

【讨论】:

    【解决方案2】:

    所以你的代码并没有真正按照你的要求去做,所以我会在你的代码所做的事情上添加一些 cmets 以了解它在哪里不起作用,并为你提供一个你想要的答案。

    import pandas as pd
    
    startNum = 1 
    endNum = 7000
    sequence = []
    for i in range(endNum): # Here you are looping from 1 to endNum = 7000 
        for j in range(endNum): # Here you are looping from 1 to endNum = 7000
            sequence.append(i) # You are adding i (7000 times because of your previous loop)
    print(i) # You probably mean to print sequence ?
    

    您可能希望第二个循环根据您想要的重复字符数(即 4)运行。

    这是执行您想要的操作的代码:

    startNum = 1
    endNum = 7000
    sequence = []
    repeat = 4
    for i in range(endNum):
        for _ in range(repeat):
            sequence.append(i)
    print(sequence)
    

    在您的情况下,我更喜欢使用扩展和列表理解(两种代码是等效的):

    startNum = 1
    endNum = 7000
    sequence = []
    repeat = 4
    for i in range(endNum):
        sequence.extend([i for _ in range(repeat)])
    

    【讨论】:

      猜你喜欢
      • 2017-02-13
      • 2016-11-21
      • 2015-12-06
      • 1970-01-01
      • 2011-04-14
      • 2017-02-02
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多