214 похожих чатов

def func_1(nums): new_arr = []

for i in range(len(nums)):
if nums[i] % 2 == 0:
new_arr.append(i)
return new_arr В коде идет отбор чётных чисел из списка и добавление их в другой список. Как бы вы его оптимизировали ?

19 ответов

18 просмотров

не писал бы на пайтоне

Хз актуально ли: lambda nums: [if x % 2 == 0 for x in nums] Вроде так можно, хотя лябмды в питоне вроде не принято юзать.

Viktor
Хз актуально ли: lambda nums: [if x % 2 == 0 for x...

При замерах в списковом включении скорость меньше, чем через цикл, так что я использовал цикл и перебор списка по элементам, а не по их индексам.

Lamer(Никита Луконенко) 💻
При замерах в списковом включении скорость меньше,...

А вообще самый быстрый вариант получился с использованием pop, я просто удалял нечётные числа из исходного списка

Lamer(Никита Луконенко) 💻
При замерах в списковом включении скорость меньше,...

Хз, что значит списковое включение, и разве ты не по индексам перебирал? Но если дрочишь на скорость выполнения, то вроде range(len()) в цикле каждый раз считается

Viktor
Хз, что значит списковое включение, и разве ты не ...

Списковое включение, это когда ты делаешь вот так: [el for el in list ...]

Lamer(Никита Луконенко) 💻
А вообще самый быстрый вариант получился с использ...

pop(i) для каждого нечётного это O(N^2), он не может быть быстрее на сколько-либо больших длинах

Lamer(Никита Луконенко) 💻
При замерах в списковом включении скорость меньше,...

Обычный list comprehension быстрее альтернативных вариантов https://pastebin.com/4kcBMhCi

Lamer(Никита Луконенко) 💻
screenshot у меня ситуация обратная

Нужны индексы чётных элементов или сами элементы? Замерять нужно на длинных списках, чтобы данные замера были полезны. Либо списках такого размера, для которого планируется применять функцию

Lamer(Никита Луконенко) 💻
я протупил сначала, нужны индексы

Если нужны индексы, не стоит использовать метод index. Он работает за линейное время

Lamer(Никита Луконенко) 💻
я пробовал range(len), он ещё медленнее

Какая разница, что быстрее на списке из одного элемента

Lamer(Никита Луконенко) 💻
задание такое

Если список из одного элемента (x,) = arr return [x] if x % 2 == 0 else []

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта