panilya 16 сентября 2019

29 полезных фрагментов Python, которые помогут в работе

29 фрагментов, реализованных в Python, которые помогут писать код со скоростью Флеша!
29 полезных фрагментов Python, которые помогут в работе

Хочешь уверенно проходить IT-интервью?

Готовься к IT-собеседованиям уверенно с AI-тренажёром T1!

Мы понимаем, как сложно подготовиться: стресс, алгоритмы, вопросы, от которых голова идёт кругом. Но с AI тренажёром всё гораздо проще.

💡 Почему Т1 тренажёр — это мастхэв?

  • Получишь настоящую обратную связь: где затык, что подтянуть и как стать лучше
  • Научишься не только решать задачи, но и объяснять своё решение так, чтобы интервьюер сказал: "Вау!".
  • Освоишь все этапы собеседования, от вопросов по алгоритмам до диалога о твоих целях.

Зачем листать миллион туториалов? Просто зайди в Т1 тренажёр, потренируйся и уверенно удиви интервьюеров. Мы не обещаем лёгкой прогулки, но обещаем, что будешь готов!

Реклама. ООО «Смарт Гико», ИНН 7743264341. Erid 2VtzqwP8vqy


Python представляет один из самых популярных языков, который многие используют в науке о данных и машинном обучении, веб-разработке, написании сценариев, автоматизации и т. д. Одной из причин такой популярности является простота и легкость в освоении.

Если вы читаете это, то, скорее всего, уже используете Python или, по крайней мере, заинтересованы в нем.

В статье мы кратко рассмотрим 29 коротких фрагментов кода, которые вы сможете понять и освоить невероятно быстро. Поехали!

1. Проверка на уникальность

Следующий метод проверяет, есть ли в данном списке повторяющиеся элементы. Он использует свойство set(), которое удаляет повторяющиеся элементы из списка:

        def all_unique(lst):
    return len(lst) == len(set(lst))


x = [1,1,2,2,3,2,3,4,5,6]
y = [1,2,3,4,5]
all_unique(x) # False
all_unique(y) # True
    

2. Анаграмма

Этот метод может использоваться, чтобы проверить, являются ли две строки анаграммами. Анаграмма – это слово или фраза, образованная путем перестановки букв другого слова или фразы, обычно используя все исходные буквы ровно один раз:

        from collections import Counter

def anagram(first, second):
    return Counter(first) == Counter(second)


anagram("abcd3", "3acdb") # True
    

3. Память

А такое можно использовать для проверки использования памяти объектом:

        import sys 

variable = 30 
print(sys.getsizeof(variable)) # 24
    

4. Размер в байтах

Метод возвращает длину строки в байтах:

        def byte_size(string):
    return(len(string.encode('utf-8')))
    
    
byte_size('?') # 4
byte_size('Hello World') # 11    
    

5. Выведите строку N раз

Данный фрагмент может быть использован для вывода строки n раз без необходимости использовать для этого циклы:

        n = 2; 
s = "Programming"; 

print(s * n); # ProgrammingProgramming
    

6. Делает первые буквы слов большими

А вот и учет регистра. Фрагмент использует метод title() для прописных букв каждого слова в строке:

        s = "programming is awesome"

print(s.title()) # Programming Is Awesome
    

7. Разделение

Этот метод разделяет список на более мелкие списки указанного размера:

        def chunk(list, size):
    return [list[i:i+size] for i in range(0,len(list), size)]
    

8. Удаление ложных значений

Так вы удалите ложные значения (False, None, 0 и «») из списка с помощью filter():

        def compact(lst):
    return list(filter(bool, lst))
  
  
compact([0, 1, False, 2, '', 3, 'a', 's', 34]) # [ 1, 2, 3, 'a', 's', 34 ]
    

9. Подсчёт

Следующий код можно использовать для транспонирования 2D-массива:

        array = [['a', 'b'], ['c', 'd'], ['e', 'f']]
transposed = zip(*array)
print(transposed) # [('a', 'c', 'e'), ('b', 'd', 'f')]
    

10. Цепное сравнение

Вы можете сделать несколько сравнений со всеми видами операторов в одной строке:

        a = 3
print( 2 < a < 8) # True
print(1 == a < 2) # False
    

11. Разделить запятой

Следующий фрагмент можно использовать для преобразования списка строк в одну строку, где каждый элемент из списка разделен запятыми:

        hobbies = ["basketball", "football", "swimming"]

print("My hobbies are:") # My hobbies are:
print(", ".join(hobbies)) # basketball, football, swimming
    

12. Подсчитать гласные

Этот метод подсчитывает количество гласных («a», «e», «i», «o», «u»), найденных в строке:

        import re

def count_vowels(str):
    return len(len(re.findall(r'[aeiou]', str, re.IGNORECASE)))


count_vowels('foobar') # 3
count_vowels('gym') # 0
    

13. Превращение первой буквы строки в строчную

Используйте, чтобы превратить первую букву указанной вами строки в строчную:

        def decapitalize(string):
    return string[:1].lower() + string[1:]
  
  
decapitalize('FooBar') # 'fooBar'
decapitalize('FooBar') # 'fooBar'
    

14. Сглаживание

Следующие методы сглаживают потенциально глубокий список с помощью рекурсии:

        def spread(arg):
    ret = []
    for i in arg:
        if isinstance(i, list):
            ret.extend(i)
        else:
            ret.append(i)
    return ret

def deep_flatten(xs):
    flat_list = []
    [flat_list.extend(deep_flatten(x)) for x in xs] if isinstance(xs, list) else flat_list.append(xs)
    return flat_list


deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]
    

15. Разница

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

        def difference(a, b):
    set_a = set(a)
    set_b = set(b)
    comparison = set_a.difference(set_b)
    return list(comparison)


difference([1,2,3], [1,2,4]) # [3]
    

16. Разница между списками

Следующий метод возвращает разницу между двумя списками после применения данной функции к каждому элементу обоих списков:

        def difference_by(a, b, fn):
    b = set(map(fn, b))
    return [item for item in a if fn(item) not in b]


from math import floor
difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x']) # [ { x: 2 } ]
    

17. Цепной вызов функции

Вы можете вызывать несколько функций в одной строке:

        def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

a, b = 4, 5
print((subtract if a > b else add)(a, b)) # 9   
    

18. Поиск дубликатов

Этот код проверяет, есть ли в списке повторяющиеся значения, используя тот факт, что set() содержит только уникальные значения:

        def has_duplicates(lst):
    return len(lst) != len(set(lst))
    
    
x = [1,2,3,4,5,5]
y = [1,2,3,4,5]
has_duplicates(x) # True
has_duplicates(y) # False
    

19. Объединить два словаря

Следующий метод может быть использован для объединения двух словарей:

        def merge_dictionaries(a, b)
   return {**a, **b}


a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}
print(merge_dictionaries(a, b)) # {'y': 3, 'x': 1, 'z': 4}
    

20. Конвертировать два списка в словарь

А теперь займемся преобразованием двух списков в словарь:

        def to_dictionary(keys, values):
    return dict(zip(keys, values))
    

keys = ["a", "b", "c"]    
values = [2, 3, 4]
print(to_dictionary(keys, values)) # {'a': 2, 'c': 4, 'b': 3}
    

21. Использование enumerate()

Фрагмент показывает, что вы можете использовать enumerate(), чтобы получить как значения, так и индексы списков:

        list = ["a", "b", "c", "d"]
for index, element in enumerate(list): 
    print("Значение", element, "Индекс ", index, )
# ('Значение', 'a', 'Индекс ', 0)
# ('Значение', 'b', 'Индекс ', 1)
# ('Значение', 'c', 'Индекс ', 2)
# ('Значение', 'd', 'Индекс ', 3)    
    

22. Затраченное время

Используйте для вычисления времени, которое требуется для выполнения определенного кода:

        import time

start_time = time.time()

a = 1
b = 2
c = a + b
print(c) #3

end_time = time.time()
total_time = end_time - start_time
print("Time: ", total_time)

# ('Time: ', 1.1205673217773438e-05)
    

23. Try/else

Вы можете использовать else как часть блока try:

        try:
    2*3
except TypeError:
    print("Возникло исключение.")
else:
    print("Слава Богу, исключений не было.")

    

24. Элемент, который появляется чаще всего

Этот метод возвращает наиболее частый элемент, который появляется в списке:

        def most_frequent(list):
    return max(set(list), key = list.count)
  

numbers = [1,2,1,2,3,2,1,4,2]
most_frequent(numbers)  
    

25. Палиндром

Метод проверяет, является ли данная строка палиндромом:

        def palindrome(a):
    return a == a[::-1]


palindrome('mom') # True
    

26. Калькулятор без if-else

В следующем фрагменте показано, как написать простой калькулятор без необходимости использования условий if-else:

        import operator
action = {
    "+": operator.add,
    "-": operator.sub,
    "/": operator.truediv,
    "*": operator.mul,
    "**": pow
}
print(action['-'](50, 25)) # 25
    

27. Shuffle

Этот код можно использовать для рандомизации порядка элементов в списке. Обратите внимание, что shuffle работает на месте и возвращает None:

        from random import shuffle

foo = [1, 2, 3, 4]
shuffle(foo) 
print(foo) # [1, 4, 3, 2] , foo = [1, 2, 3, 4]
    

28. Поменять значения

Действительно быстрый способ поменять две переменные без необходимости использования дополнительной:

        def swap(a, b):
  return b, a

a, b = -1, 14
swap(a, b) # (14, -1)
    

29. Получить значение по умолчанию для отсутствующих ключей

Код показывает, как вы можете получить значение по умолчанию, если ключ, который вы ищете, не включен в словарь:

        d = {'a': 1, 'b': 2}

print(d.get('c', 3)) # 3
    

Понравилась статья? Ставьте сердечко и оставляйте свои комментарии. ? 

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ