Добавление значений функций в список во время итерации - PullRequest
0 голосов
/ 14 апреля 2020

Я всего Python новичок, так что извините за этот глупый вопрос

Функция composition() возвращает определенное значение

Однако я хочу, чтобы значение было <=10 и я хочу 100 из них. Приведенный ниже код вычисляет время, необходимое для имитации 100 composition() значений, чтобы иметь <=10

def find():
    i=1
    aaa=composition()
    while(aaa>10):
        aaa=composition()
        i=i+1        
    return i

Customers_num=[find() for i in range(100)]
Customers_num=np.array(Customers_num)
print(np.sum(Customers_num))

Однако предположим, что приведенный выше код возвращает 150. И я также хотите узнать все значения, которые были смоделированы в 150 раз из composition() С каким кодом мне начинать?

Я думаю о том, чтобы объединить его с if else method statement и добавить значения в пустое список, но пока мой код был полной катастрофой

def find():
    i=1
    aaa=composition()
    bbb=[]
    if aaa<=10:
        bbb.appendd([aaa])
    else:
        bbb.append([aaa])
        aaa=composition()
        bbb.appendd([aaa])
        while(aaa>10):
            i=i+1
            if aaa>10:
                bbb.append([aaa])
            else:
                bbb.append([aaa])            
    return i,bbb

find()

Заранее спасибо!

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете создать генератор, который сгенерирует n списка значений из composition() и остановится, когда n из них будет <= 10. Этот список будет включать все числа, поэтому у вас есть все промежуточные значения, и длина этого списка будет, сколько "долго" потребовалось для его создания. Например (с ложной случайной функцией composition():

from random import randint

def composition():
    return randint(0, 20)


def getN(n):
    while n > 0:
        c = composition()
        if c < 10:
            n -= 1
        yield c

values = list(getN(10)) # get 10 values less than 10
# [2, 0, 11, 15, 12, 8, 16, 16, 2, 8, 10, 3, 14, 2, 9, 18, 6, 11, 1]

time = len(values)
# 19
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...