если значения нулевые как мне надо то вроде можно использовать range хотя я не помню уже как. а если нужно заполнить случайными значениями типа random.randint. Количество значений примерно 16 миллионов. Не спрашивайте плз зачем мне это надо. Но надо. Как оптимизировать код чтобы выполнялось максимально быстро. А то если сделать чисто append в цикле то выполняется аж ~16 секунд пиздец как много.

  • TheAnonymous
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Вообще если максимально быстро, то наверное, только numpy. Если именно на чистом питоне, там тоже можно пооптимизировать, суть в том, чтобы не было цикла на миллионы итераций в питоновом коде (лямбда не прокатит кстати). Например, можно взять random.choices import random x = random.choices(range(1, 11), k=16000000) Если диапазон небольшой, можно развернуть range в лист random.choices(list(range(1, 11)), k=16000000) , ещё немного быстрее Ну или если пойдут значения от 0 до 255, то list(random.randbytes(16000000)) тоже быстро будет

    • Anoxemian
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      О, ты на скиле. Просвети нам, почему такая разница у этих функций?

      random.randint(0, 2**32-1)
      int.from_bytes(random.randbytes(4))
      
      • TheAnonymous
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        А хз, я во внутренностях питона особо не шарю. Возможно, во втором случае там сразу нативные функции, а в первом ещё какие-то проверки