提问人:libing bai 提问时间:1/9/2023 最后编辑:luk2302libing bai 更新时间:1/9/2023 访问量:100
如何生成一个数字序列1111222233334444....9999...?
How to generate a number sequence 1111222233334444....9999...?
问:
我想生成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
答:
0赞
Ronin
1/9/2023
#1
我不知道为什么,但是
endnum = 7
''.join([f"{str(i)*4}" for i in range(endnum)])
print(result)
结果
0000111122223333444455556666
它需要不到 1 秒的时间endnum = 7000
0:00:00.006550
0赞
Youyoun
1/9/2023
#2
因此,您的代码并没有真正按照您的要求执行,因此我将添加一些关于您的代码的功能的注释,以了解它在哪里不起作用,并为您提供一个符合您想要的答案。
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)])
评论
0赞
libing bai
1/10/2023
是的,你是对的。我想输出序列。print(i) 是错误的。它运行得非常快。谢谢。
0赞
kev_ta
1/9/2023
#3
您可以尝试以下操作:
startNum = 1
endNum = 5
seq = [ (str(i+1))*endNum for i in range(endNum) ]
print("".join(seq))
评论
0赞
libing bai
1/10/2023
谢谢。str 操作实际上比 num 操作更快。
评论
generator
print