Способы избежать нескольких циклов FOR - PullRequest
1 голос
/ 28 апреля 2020

У меня есть две переменные (var1, var2), которые должны увеличиваться с шагом 0.1 каждая л oop каждый раз, когда переменная loop достигает 30000.

Вот что я мы делали

while loop < 300000 and var1<3 and var2<3: 
  function(var1,var2,random)
  loop+=1

  if loop == 300000:
    loop=0
    var1+=0.1
    if var1>3:
      var=1
      var2+=0.1

Таким образом, моя функция будет перебирать все значения от 1 до 3 из обоих значений.

Слон в комнате очевиден: этот код очень медленный. Есть ли лучший способ решения этой проблемы?

Вот пример моей функции

  def function():
     index_high = np.argmax(df[random_number:,2] > var1 * fixed_value)
     index_low  = np.argmax(df[random_number:,1] < var2 * fixed_value)
     if index_high < index_low:
        high_counter+=1
     if index_high > index_low: 
        low_counter+=1


   for random in random_list(30000): 
      function(var1, var2,random)

Вот что делает код:

1 - подобрать случайное число от random_list(), затем применяется;

2 - применение значений random, var1, var2 к index_high и index_low lines;

3 - найти в зависимости от того, что выше и выше счетчика;

Это нужно будет сделать с 300000 случайных чисел. Есть ли способ:

  1. Вырезать при l oop, чтобы сделать функцию более эффективной.
  2. Удалить двойные IF-циклы и все еще увеличивать обе переменные?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...