Python3: добавить в список внутри двух для циклов - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующий код, который суммирует максимум 100 случайных чисел, взятых из нормального распределения, пока оно не достигнет -10 или +10:

import numpy as np
mylist=[]
summ = 0
for x in range(100):
    i = np.random.randn()
    summ += i
    mylist.append(i)
    if summ < -10 or summ >10:
        break

Теперь я хочу запустить это 500 раз,и, таким образом, создать список из 500 списков, каждый из которых содержит номера.Я думал поместить это в другой цикл for:

for p in range(500):
    templist = []
    for x in range(100):
        i = np.random.randn()
        summ += i
        templist.append(i)
        if summ < -10 or summ >10:
            mylist.append(templist)
            break

За исключением того, что я не знаю, как добавить элемент i в список сейчас ...

Обновление: Я обновил код, так что случайные числа сначала добавляются во временный список templist, и как только сумма выходит за пределы, он добавляет этот список к mylist.Тем не менее, не работает до сих пор!

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете выполнить любую функцию 500 раз и сохранить результат в списке с помощью декораторов.Просто поместите свою функциональность в функцию:

import numpy as np

def execute_500_times(func):

    def multiplying_func(*args, **kwargs):
        list_of_results = list()
        for _ in range(500):
            list_of_results.append(func(*args, **kwargs))
        return list_of_results

    return multiplying_func

@execute_500_times
def myfunc():
    mylist=list()
    summ = 0
    for x in range(100):
        i = np.random.randn()
        summ += i
        mylist.append(i)
        if summ < -10 or summ >10:
            break

    return mylist

result = myfunc()

Преимущество этого заключается в том, что функцию декоратора можно использовать и для других функций вместо простого изменения вашей исходной функции.

0 голосов
/ 27 сентября 2018
mylist = []
for p in range(500):
    new_list = []
    summ = 0
    for x in range(100):
        i = np.random.randn()
        summ += i
        new_list.append(i)
        if summ < -10 or summ >10:
            break
    mylist.append(new_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...