Python: ключевые понятия и хитрости
В этой статье мы расскажем о решении проблем в Python простым и легким способом, а также о хитростях и парадигмах кода, которые вы можете увидеть в коде других людей.
Введение
Как и всем программистам, нам всегда нравится начинать с описания типов данных. Это отличный способ выучить и объяснить любые новые понятия языка. Итак, какие типы данных бывают в Python? Давайте посмотрим:
Тип данных или просто тип - это атрибут данных, который сообщает интерпретатору, как программист намеревается использовать данные. Как мы все знаем, наиболее распространенными типами данных в Python являются float (с плавающей запятой), int (целое число), str (строка), bool (логическое значение), list и dict (словарь). Но в отличие от C или C ++, Python автоматически определяет, в каком типе данных он будет хранить данные. но вам необходимо знать типы данных для преобразования данных из одного типа в другой (также называемый преобразованием типов или преобразованием типов). Давайте рассмотрим пример базового типа данных (List), чтобы понять язык и программирование в целом.
## I am simply creating a list and printing out the type of indivisual elements in the list ..
List = [1,2.0,"Hello World",True,[1,2,3,4,5],{'key':'value'}]
# I am using for in loop because the size of the list is fixed ..
for element in List:
print(type(element))
# or you can also use list compreshension
elements = [type(element) for element in List]
print(elements)
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'list'>
<class 'dict'>
[<class 'int'>, <class 'float'>, <class 'str'>, <class 'bool'>, <class 'list'>, <class 'dict'>]
Помните - мы можем создавать свои собственные структуры данных в python отдельно от структур данных, предоставляемых python. Все, что вам нужно сделать, это создать класс и определить свои собственные методы в этом классе. Вот как создается кадр данных для pandas ... Но мы напишем об этом в другой раз. А пока давайте придерживаться некоторых основ!
Основные методы списка
Давайте посмотрим на некоторые методы списка, чтобы вставить и удалить элемент из списка…
- append: добавить элемент в список. Производительность: Временная сложность для добавления элемента в конец списка: o (1), а в любом другом месте o (n).
- remove : удалить элемент из списка. Производительность: временная сложность удаления элемента из списка составляет o (n)
Временная сложность для поиска элемента в списке всегда o (1)
## List Methods ...
# insertion
List.append((1,5.0))
print(List)
# seraching an element in the list which is already in a list ...
list_in_list = List[4][0]
print(list_in_list)
# deletion
List.remove(1)
print(List)
[1, 2.0, 'Hello World', True, [1, 2, 3, 4, 5], {'key': 'value'}, (1, 5.0)]
1
[2.0, 'Hello World', True, [1, 2, 3, 4, 5], {'key': 'value'}, (1, 5.0)]
Управление элементами списка
- lambda Function: они записаны в 1 строку и используются для определения пользовательских функций.
- map() Method (также называемый векторным методом в DataScience): используйте функцию map для сопоставления пользовательской функции, определенной вами, с каждым элементом списка. метод map принимает 2 аргумента -
а. функция, которую вы хотите применить
б. список, который вы хотите применить вышеупомянутую функцию
- enumerate() Method: метод enumerate () добавляет счетчик к итерируемому и возвращает его. Возвращаемый объект является объектом перечисления.
custom_list = [[1,2,3,4,5],["Cat","Dog","Dog","Tiger","Lion","Goat"]]
# custom function to find square of a number
def square_of_number(x):
return x*x
# using lambda functions to create a new list from exisitng list but with cube of each items in the list..
cube_of_number = lambda x:x*x*x
squares_of_list_items = lambda x:x*x
# using map function to apply a function to all elements of the list
new_list_of_squares = list(map(squares_of_list_items,custom_list[0]))
new_list_of_cubes = list(map(cube_of_number,custom_list[0]))
print(new_list_of_squares)
print(new_list_of_cubes)
# Using Enumerate to find the count of Each animal in custum_list
for i,x in enumerate(custom_list[1]):
print('iterater is :', i ,'and value is ', x)
[1, 4, 9, 16, 25]
[1, 8, 27, 64, 125]
<enumerate object at 0x7f0cf44e4b40>
iterater is : 0 and value is Cat
iterater is : 1 and value is Dog
iterater is : 2 and value is Dog
iterater is : 3 and value is Tiger
iterater is : 4 and value is Lion
iterater is : 5 and value is Goat
Генераторы и декораторы:
- Генераторы Python (Generators) - это простой способ создания итераторов/итерируемых объектов. Это то, что может быть приостановлено во время вызова функции и может быть возобновлено в любое время в течение жизненного цикла всей программы с помощью функции next ().
- Декораторы (Decorators) - это объекты первого класса в Python. Это означает, что они могут быть переданы по ссылке в любой функции. Decorator - это просто причудливое имя и способ передачи функции в качестве аргумента другой функции. они также называются вызываемыми объектами, которые принимают функцию и возвращают или изменяют поведение этой функции.
# Generators :
def generator():
for i in range(5):
yield i
print(generator) # output:// <function generator at 0x7fd59831ad08>
a = generator()
print(next(a)) # output:// 0
print(next(a)) # output:// 1
# Decorators
def function1():
print('this is function 1')
def function2(function_argument):
function_argument()
print('this is function 2')
new_object = function2(function1) # output:// this is function 1 this is function 2
# using it as a decorator function ...
@function2
def function1():
print('this is function 1') # output:// this is function 1 this is function 2
*args и **kwargs
args и ** kwargs - самые важные ключевые слова, которые мы часто используем в своем стиле кодирования и практике программирования. Например, вы создаете функцию, и вы не знаете ожидаемое количество параметров. В этом случае мы используем * args, а если это словарь, то используем ** kwargs.def arr(*args):
for i in args:
print(i)
arr(1,2,3,4) # output: // 1 2 3 4
arr(1,2) # output:// 1 2