Python 如何用特定的时间迭代数字?

Python 如何用特定的时间迭代数字?,python,Python,我是python新手,尝试创建文本文件来打印从1到1800的数字,但每次每个数字都会以如下所示的特定时间进行迭代 1 will be iterated to 1799 times 2 will be iterated to 1798 times 3 will be iterated to 1797 times . . . 1799 will be iterated 1 times 我试着写这段代码 myfile = open("/home/user/Desktop/num.tx

我是python新手,尝试创建文本文件来打印从1到1800的数字,但每次每个数字都会以如下所示的特定时间进行迭代

1 will be iterated to 1799 times 
2 will be iterated to 1798 times 
3 will be iterated to 1797 times
.
.
.
1799 will be iterated 1 times 
我试着写这段代码

myfile = open("/home/user/Desktop/num.txt", "w")

for i in range(1,1799):
    for j in range(1,1799):
        myfile.writelines(" "+str(i)+'\n')
        myfile.write(" ")
        j=j-1
    

myfile.close()

但是迭代出错了。。我认为第二个for循环中的问题是,我需要在完成工作后每次迭代减一次

我相信你想要一个每行一个数字的文件,第一个1799行是1,下一个1798行是2,…,直到1799被打印一次

N=1799
打开(“/home/user/Desktop/num.txt”,“w”)作为我的文件:
对于范围(1,N+1)内的i:
对于范围内的j(N+1-i):
myfile.write(f'{i}\n')
以下情况可能会提高性能:

打开(“/home/user/Desktop/num.txt”,“w”)作为我的文件:
myfile.write(''.join([f'{i}\n'*(1800-i)表示范围(11800)内的i)])

这里有一种方法。使用双循环的另一种方法要快得多:

myfile = open("/home/user/Desktop/num.txt", "w")

for i in range(1,1800):
    temp=[(' '+str(i)+'\n') for k in range(i,1800)]
    myfile.writelines(temp)

myfile.close()

你想要这样的吗

解决方案1:

count= 5
i= 0
j = 1
while i != count:
    j = 1
    print("{} will run for {}".format(i+1,(count-i)))
    i+=1               
解决方案2:

count= 5
i= 1
i_count= count+1
while i != i_count and count>=0:
    print('{} will run {} times'.format(i, count))
    for k in range(1,count+1):
        print(k)
    count-=1
    i+=1

你确定1800不会被打印一次,1799不会被打印两次吗?1800不会出现,但1799会重复1000次以上。你可以发布所需的输出吗?或者举个小例子?你不能有1800“1”和1“1799”,如果你以1800“1”开头,你必须以2“1799”和1“1800”结尾。是的,你是对的。。我与数字相矛盾,因为我有大量的数据,而且我的回答是错误的。。谢谢你的回答和帮助真的更快吗?我认为列表理解是循环的语法糖。因此,我认为这也是从根本上使用两个循环,除非有一些疯狂的列表理解优化,我不知道。如果单次writeline调用与多次writeline调用相比速度有所提高,我想我不会感到非常惊讶。这是由于write函数而不是循环本身造成的。在您的解决方案中(我也首先尝试过),我们执行160万个写命令,而在我的解决方案中,我们只执行1800个写命令。如果writelines将RAM中的所有内容结合起来并执行单个写入命令,那么与写入每一行相反,这就是时间增益。但在进一步讨论之后,我们可以收集RAM中的所有行,将它们连接起来,然后进行一次写入,以获得更大的性能增益(时间而不是空间)。我对其进行了测试,结果没有显著差异,可能从160万次写入到1800次是一个巨大的改进,但是从1800次写入到1次写入没有任何区别。我在for循环中做了更改,作为迭代次数的逻辑,但数字“1”仍然是迭代1800次!你能看看我的编辑帖子吗谢谢你的回答。。如果我需要,第一个数字迭代1799,最后一个数字是1799,迭代一次。。我试着让循环中的2变成1799,第二个变成相同的数字。。但是得到了1800次@python范围(a,b)中的user1从a到b-1(包括b-1),其中包含(b-a)项。所以范围(1,10)是1,2,3,4,5,6,7,8,9,是(10-1)=9项。所以,如果你想要1799个从1开始的项目,你会选择范围(11800),因为a=1,b=1800,(b-a)=1799=项目数量。因此,将我的1801点替换为1800点。@user1更改了答案以反映1799我被困在1800点。。我所做的每一次改变都是1800次。。我试过你的编辑代码,第一个数字仍然是1800。我试过N=1799,打开(“/home/user/Desktop/N.txt”,“w”)作为myfile:for i in range(1,N):for j in range(N-i):myfile.write(f'{i}\N'),但第一个数字仍然是1800