Я пытаюсь использовать понимание списка, чтобы воссоздать результаты функции, которая включает в себя несколько операторов elif
.Список Контроль управления Поток
Моя программа в настоящее время, как этот
import numpy as np
def myFunction(x):
result = []
for num in x:
if num <= 0.5:
result.append(1)
elif num <= 0.75:
result.append(2)
elif num <= 0.9:
result.append(3)
else:
result.append(4)
return result
u = np.random.uniform(0,1,1000)
myFunction(u)
Эта программа производит список 1,2,3 или 4 с соответствующими вероятностями. Мне было интересно, есть ли способ, которым я мог бы использовать понимание списка для выполнения одной и той же задачи.
Предположим, что мне дали вектор x = [1,2,3,4]
, мои желаемые результаты и Prob = [0.5,0.75,0.9,1.0]
, кумулятивную вероятность того, что произойдет i-й случай. Как я могу использовать понимание списка, получаю аналогичный результат?
Я пытался сделать что-то вроде
[x[i] for num in u for i, test in enumerate(Prob) if num <= test]
но это возвращает все элементы x
где num <= test
, и я только хочу первый.
Я надеюсь, что это сделано с благодарностью за любую помощь.
Если вы хотите только первое вхождение можно обернуть список вашего понимания с 'вызова next' функции, например:' next (x [i] для num in u for i, test in enumerate (Prob), если num <= test) '. Хотя я должен признать, что я не совсем уверен, правильно понял, что вы хотите – UnholySheep
Линии кода никогда не были хорошей метрикой программного обеспечения практически для любых целей. Как это бывает, ваш верхний блок кода работает значительно быстрее и значительно читабельнее, чем предлагаемые ответы. – msw