Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science, веб-разработки, этот язык программирования по-прежнему остается в тренде.
Мы рассмотрим некоторые методы, которые хотя и присутствуют в Python и имеют множество применений, но используются очень малым количеством программистов.
Метод zip() сопоставляет похожие индексы нескольких контейнеров и возвращает элементы, скрепленные в кортеж.
Метод zip() принимает итерируемые контейнеры и возвращает один объект-итератор, содержащий сопоставленные значения из всех контейнеров. Итерабельные объекты типа "строки", "список".
name = [ "A", "B", "C", "D" ] roll_no = [ 4, 1, 3, 2 ] # zip() to map the values mapped = zip(name, roll_no) print(list(mapped))
[('A', 4), ('B', 1), ('C', 3), ('D', 2)]
Посмотрите, как элемент первого списка объединяется с элементом второго списка в TUPLE.
Аналогично можно поместить их в словарь, используя метод zip() на нескольких итерируемых объектах.
student = ['Priya', 'Karan', 'Nikhil'] marks = [86, 92, 89] database = {student: marks for student,marks in zip(student, marks)} print(database)
{'Priya': 86, 'Karan': 92, 'Nikhil': 89}
Вы также можете распаковать файл с помощью метода zip(). Но помните, что возвращаемые значения будут иметь тип tuple.
name = ["Nikhil", "Veena", "Karan"] roll_no = [3, 1, 2] marks = [49, 50, 82] # zip() to map values mapped = zip(name, roll_no, marks) mapped = list(mapped) print("The zipped values are : ", end="") print(mapped)
Zipped result is : [('Nikhil', 3, 49), ('Veena', 1, 50), ('Karan', 2, 82)]
# unzipping values namz, roll_noz, marksz = zip(*mapped) print("Unzipped values are: \n", end="") print("The name list is : ", end="") print(namz) print("The roll_no list is : ", end="") print(roll_noz) print("The marks list is : ", end="") print(marksz)
Unzipped values are: The name list is : ('Nikhil', 'Veena', 'Karan') The roll_no list is : (3, 1, 2) The marks list is : (49, 50, 82)
Видите, что возвращаются кортежи.
Вы можете использовать этот метод, чтобы застегнуть множество значений и использовать их для сортировки или других операций.
Map() выполняет ту же работу, что и zip(), но с небольшим отличием. Она принимает в качестве аргументов функцию и итерируемый объект, вместо двух итерируемых объектов в zip(), и применяет функцию к каждому элементу итерируемого объекта.
# Return double of n def double(n): return 2*n numbers = [1, 2, 3, 4] result = map(double, numbers) print(list(result))
[2, 4, 6, 8]
Обратите внимание, что она также возвращает итератор, как и zip().
Вы также можете использовать лямбда-функцию и также передать два итерируемых объекта.
numbers1 = [2, 4, 6] numbers2 = [1, 2, 3] result = map(lambda a, b: a + b, numbers1, numbers2) print(list(result))
[3, 6, 9]
Вы можете использовать эту функцию вместо циклов и применять ее к одному или нескольким итерируемым объектам.
Почувствуйте себя сильным с помощью этих 2 методов. Откройте для себя последние 2 метода.
Метод filter() используется для применения фильтра к любому объекту iterable.
Он также принимает функцию и объект iterable в качестве аргументов и проверяет истинность или ложность каждого элемента на основе функции.
# defining the function def vowel_check(letter): vowels = ['a', 'e', 'i', 'o', 'u'] if (letter in vowels): return True else: return False text='Hi there i am Programming' result = list(filter(vowel_check , text)) print(result)
['i', 'e', 'e', 'i', 'a', 'o', 'a', 'i']
Мы передали строку как объект iterable и получили обратно последовательность отфильтрованных символов.
Мы также можем передать лямбда-функцию.
result = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6]) print(list(result))
[2, 4, 6]
Без filter() это выглядело бы следующим образом:
list1 = [1, 2, 3, 4, 5, 6] result=[] for i in list1: if i%2==0: result.append(i) print(result)
[2, 4, 6]
Этот метод можно использовать для отсеивания объектов, которые являются итерируемыми. Таким образом, он, по сути, является фильтром, как это и называется, и может быть использован для сокращения строк кода или избежания циклов.
Наш последний метод в этой статье, барабанная дробь, пожалуйста.
Метод reduce(), по сути, применяет функцию ко всем элементам переданной последовательности.
Помните, что для использования этого метода необходимо импортировать functools.
import functools list1 = [1, 2, 3, 4, 5] print(functools.reduce(lambda a, b: a+b, list1))
15
Таким образом, он суммирует все элементы списка и выдает одно значение.
Аналогично можно сравнить значения по всей последовательности.
import functools list1 = [1, 2, 3, 4, 5] print(functools.reduce(lambda a, b:a if a>b else b, list1))
5
Так в чем же польза?
Метод reduce() применяет функцию ко всем элементам последовательности, как и filter(), но результат передается на остальную часть последовательности.
Так что если бы я хотел свести все символы в строку, не нуждаясь в переменной, хранящей их, я бы сделал это следующим образом:
import functools lis = ['A', 'w', 'e', 's', 'o', 'm', 'e', '-', 'M', 'e', 't', 'h', 'o', 'd', 's'] print(functools.reduce(lambda a, b:a+b, lis))
Awesome-Methods
И вуаля, Читатели. Мы познакомились с некоторыми редко используемыми методами, которые можно применять для различных операций с меньшим количеством строк кодирования.
Спасибо
05.05.2023 14:00
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
05.05.2023 11:59
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.
05.05.2023 11:57
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.
05.05.2023 09:26
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут вам настроить, как будет выглядеть ваш сайт Temple, и вы можете настроить его дизайн в зависимости от ваших потребностей в дополнение к более чем 15+...