Некоторые методы, о которых вы не знали, что они существуют в Python

RedDeveloper
04.05.2023 13:44
Некоторые методы, о которых вы не знали, что они существуют в Python

Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science, веб-разработки, этот язык программирования по-прежнему остается в тренде.

Мы рассмотрим некоторые методы, которые хотя и присутствуют в Python и имеют множество применений, но используются очень малым количеством программистов.

Zip

Метод 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

И вуаля, Читатели. Мы познакомились с некоторыми редко используемыми методами, которые можно применять для различных операций с меньшим количеством строк кодирования.

Спасибо

Wink
Wink
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.