Рубрики
Без рубрики

Представляем функцию карты Python

Функция картирования Эй, там! Давайте поговорим о коде и как повторно можно получить. Написание р … Теги с Python.

Привет! Давайте поговорим о коде и как повторно можно получить. Писать повторный код никогда не выглядит хорошо для разработчиков. Однако иногда трудно избегать. Знание этого, есть инструменты, которые помогают нам сократить код. Инструмент, который я обсуждаю, это карта функция. карта Функция позволяет использовать переключение списка, применяющую желаемую функцию для каждого элемента списка. Давайте точно сломаемся, как это работает.

Приведенный ниже фрагмент кода представляет функцию, которая принимает номер и добавляет его к нему. Учитывая список чисел, как я могу применить add_number Функция для каждого элемента в утечке?

def add_number(number):
    return number + 1

Используя карта Функция, вы пройдете в нужную функцию и список аргументов. Данная функция будет затем использоваться над элементом каждого списка.

def add_number(number):
    return number + 1

numbers = [1, 2, 3]

mapped_numbers = map(add_number, numbers)

print("After Adding 1")
for number in mapped_numbers:
    print(number)

names = ["Guido", "John", "Derek"]

print("Lengths of names")
for name_length in map(len, names):
    print(name_length)

Выход:

After Adding 1
2
3
4
Lengths of names
5
4
5

карта Функция может сделать длинные шаги, действительно короткие. Цель здесь – снизить повторяющийся код. С карта это может быть достигнуто. Теперь наш код может быть чистым, лаконичным и презентабельным!

Пример

Вот более длительный способ достичь цели этой программы:

# The function below removes all vowels from the word provided in the argument
def no_vowel(word):
    for ch in "AEIOU":
        word = word.replace(ch, "")
        word = word.replace(ch.lower(), "")
    return word


# We want to remove each vowel from each word in the list below
word_list = ["Captain", "Crunch", "Cereal", "Yummy"]

# With each removed vowel we want to append the new word into the list below
removed_vowel_list = []

for word in word_list:
    removed_vowels = no_vowel(word)
    removed_vowel_list.append(removed_vowels)

string = f"{word_list} --> {removed_vowel_list}"

print(string)

Выход

    ['Captain', 'Crunch', 'Cereal', 'Yummy'] --> ['Cptn', 'Crnch', 'Crl', 'Ymmy']

Но при использовании функции карты () вот как код может быть сокращен:

    def no_vowel(word):
        for ch in "AEIOU":
            word = word.replace(ch, "")
            word = word.replace(ch.lower(), "")
        return word

    word_list = ["Captain", "Crunch", "Cereal", "Yummy"]

    new_list = list(map(no_vowel, word_list))

    string = f'{word_list} --> {new_list}'

    print(string)

Выход

    ['Captain', 'Crunch', 'Cereal', 'Yummy'] --> ['Cptn', 'Crnch', 'Crl', 'Ymmy']

При использовании карта Приятно знать, что это тип генератора. Возвращаемое значение для карта это объект карты (итератор). Подумайте об этом как список, но он не может хранить данные. Карта Является ли ленивый генератор, то есть это одно использование и только оценивает при необходимости. Вызов функции на карте может позволить ему использовать.

nums = [10, 5, 13, 7]

mapped = map(print, nums) # nothing gets printed

list(mapped) # things get printed (caling function on map)

list(mapped) # nothing gets printed (single use)

Для получения дополнительной информации о карта Вы можете следовать документации. https://docs.ython.org/3/Library/functions.html#map

Оригинал: “https://dev.to/derekstegall/introducing-python-s-map-function-11d1”