Как я могу сделать свой код более оптимизированным с помощью функций?

#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])) выполнения того, что не может сделать генератор, созданный с помощью?