插入从for循环中获取的值

时间:2013-08-18 11:54:05

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

在这段代码中,我分别打印了这两个n值。但是我希望在每次循环后将这些值打印在一个数组中。我怎么能这样做?

n=1000000
for x in range(1,3000001):
    if n%2==0:
        x=n/2
    else:
        x=3*n+ 1
    n=x
    print(n)
    if n==1:
        break

谢谢。

2 个答案:

答案 0 :(得分:4)

end=' '内使用print()

print(n, end=' ')

<强>演示:

for i, x in enumerate(range(10), 1):
    print (x, end=' ')
    if x==5:
        break
...         
0 1 2 3 4 5
>>> print(i)  #print the count
6

答案 1 :(得分:4)

您可以将值存储在列表中(例如下面的result):

n = 1000000
result = [] 
for x in range(1, 3000001):
    if n % 2 == 0:
        x = n / 2
    else:
        x = 3 * n + 1
    n = x
    result.append(n)
    if n == 1:
        break
print(result)
# [500000, 250000, 125000,... 8, 4, 2, 1]
print(len(result))
# 152

将项目存储在列表中,您可以在以后的代码中进一步处理这些项目。您可以打印它们,计算它们,对它们进行更多计算等。

然而,它确实需要内存来存储它们,所以如果你不需要同时将它们全部保留在内存中,Ashwini Chaudhary的解决方案会更好。

这是一种类似于Ashwini的方法,除了它将打印与计算分开。这总是一件好事,因为通常人们希望执行计算而不是同时显示结果。

n = 1000001

def myseq(n):
    for x in range(1, 3000001):
        if n % 2 == 0:
            x = n / 2
        else:
            x = 3 * n + 1
        n = x
        yield n
        if n == 1:
            return

for n, item in enumerate(myseq(n), 1):
    print(n, end=' ')
# 500000 250000 125000... 8 4 2 1
print('\n{}'.format(n))