#python #optimization
#python #оптимизация
Вопрос:
У меня есть код, в котором python сортирует параметры по другим, используя zip-файлы и лямбды. Итак, вопрос в том, как я могу сделать его проще и более оптимизированным. ЗАРАНЕЕ СПАСИБО!
# Declaring initial lists
zipped1 = zip(al2, al3)
# Converting to list
zipped1 = list(zipped1)
# Using sorted and lambda
res1 = sorted(zipped1, key=lambda x: x[1])
# printing result
help1 = [x for x, y in res1]
fine1 = iter(help1)
Комментарии:
1. Функции на самом деле не оптимизируют код. Вместо этого они используются для повторного использования и правильной структуры кода.
2. Итак, если не с помощью функций, как я могу уменьшить свой код?
3. Как вы ожидаете, что это будет выглядеть или произойдет, когда оно будет «оптимизировано»? Какую именно проблему вы пытаетесь решить? Непонятно..
4. Я хочу, чтобы это было в одной строке, например
5. Опять же, почему это должно быть в одной строке? Сокращение его до одной строки не обязательно делает его оптимизированным. Иногда это даже делает его менее читаемым.
Ответ №1:
Вы могли бы полностью избавиться от zipped1
and help1
, например:
fine1 = [x for x, _ in sorted(zip(al2, al3), key=lambda x: x[1])]
Хотя это не оптимизирует скорость вашего кода, просто размер.
Комментарии:
1. Нет необходимости в промежуточных списках, а затем в последних
iter
. Простоfine1 = (x for x, _ in sorted(zip(al2, al3), key=lambda x: x[1]))
делает то же самое.2. @MisterMiyagi Хороший крик, я отредактировал это в
3. Наконец, я сделал так: fine1 = iter([x для x, y в отсортированном (список (zip(al2, al3)), ключ = лямбда x: x[1])])
4. @elbekrustamov Но что делает создание списка и вызов для
iter
fine1 = (x for x, _ in sorted(zip(al2, al3), key=lambda x: x[1]))
выполнения того, что не может сделать генератор, созданный с помощью?