2016-08-28 5 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

Умеешь ли ты быть более конкретным? Вы хотите, чтобы результат выглядел определенным образом во время печати? Похоже, вам нужен 2-й массив. – 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 Похоже, что вы хотите 2d массив. Вот еще один способ сделать это.

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 
Смежные вопросы