2016-08-28 28 views
1

目前得到这个输出如何在每个循环后添加新行?

[1, 1, 3, '\n'] 
[1, 1, 3, '\n', 7, 7, 7, '\n'] 

寻找这个输出

[1, 1, 3] 
[7, 7, 7] 

代码:

import random 
    my_list=[] 
    n = 3 
    m = 1 
    while m < 10: 
    for i in range(n): # repeats the following line(s) of code n times 
     my_list.append(random.randrange(0,9)) 
    my_list.append("\n") 
    print(my_list) 
    m = m+1 
+0

你能更具体一点吗?你想在印刷时以某种方式看起来结果?我看起来像你想要一个2D数组。 – reticentroot

+0

@reticentroot尝试创建一个用于测试(3485,6758,8094)的随机数字文件,但在一个新行上创建了每组4个数字。 – scorpionz

回答

2
import random 
n = 3 
m = 0 
my_list = [] 
while m < 10: 
    my_list.append([]) 
    for i in range(n): 
     my_list[m].append(random.randrange(0, 9)) 
    print(my_list[m]) 
    m = m + 1 

这里面的代码my_list创建子列表,并打印出每个子列表每次迭代。所以,你的输出可能是这样的:

[0, 4, 8] 
[3, 1, 5] 
... 
[9, 2, 5] 

my_list将存储的所有子列表,像这样:[[0, 4, 8], [3, 1, 5], ..., [9, 2, 5]]

2

我@Neil同意它看起来像你想有一个二维数组。这是另一种方法。

from random import randint 

my_list = [[randint(1, 11) for i in xrange(10)] for j in xrange(randint(5, 10))] 

这将创建一个0-9的数字对象5到9次。例如[[2,3,4,5 ...],[1,2,2,3 ...] ...]

然后,您只需遍历对象以按照您想要的方式进行打印

for item in my_list: 
    print item 

UPDATE

鉴于你说我这里是一个随机数生成文件的注释。

from random import randint 

#number of lines to create on the file 
n = 3 
with open('my_file.txt', 'w') as cout: 
    for i in xrange(n): 
    cout.write('{0}\n'.format(randint(1000, 10000))) #this is exclusive so it will only go as high as 9999 

如果您希望每行的更多数字格式化写入方法中的文本。 E.G

cout.write('{0}, {1}\n'.format(randint(1000, 10000), randint(1000, 10000))) 
+0

谢谢你的例子。 – scorpionz

+0

有没有办法添加一个逻辑删除重复的数字,如果有的话? – scorpionz

+0

而不是使用列表使用一组。 – reticentroot

1

将my_list = []放入外部循环中,以便每次重新初始化它。另外,如果您不想要换行符,请不要将其附加到my_list。如果您希望同一行中的所有输出使用可选参数arg end来执行打印功能。

import random 
n = 3 
m = 1 
while m < 10: 
    my_list = [] 
    for i in range(n): 
     my_list.append(random.randrange(0,9)) 
    print(my_list, end="") 
    m += 1 
相关问题