Найти тему
Машинное обучение

Мощные однострочные функции в Python

Сегодня мы узнаем о полезных однострочниках в Python. Когда я впервые увидел однострочную функцию кода на питоне, я подумал: «Это возможно?» Однострочники сокращают время написания большого кода и делают его чище, но их может быть сложно понять тем, кто только начал свой путь в python.

1. Однострочный цикл for

Стандартный цикл на Python выглядит так:

num_list=[]
for num in range(0, 11):
num_list.append(num)
print(num_list)>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Теперь напишем генератор в одну строку:

num_list=[for num in range(0, 10+1)]
## '10+1' as the upper limit is excluded.
print(num_list)
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Давайте начнем с простой однострочной программы, в которой мы создаем список, содержащий числа от 0 до 10.

>>> for num in range(10): print(num)0
1
2
3
4
5
6
7
8
9

2. Цикл for с оператором if

Обычная программа:

even_num_list =[]
for num in range(10, 20):
if num % 2 == 0:
even_num_list.append(num)
print(even_num_list)
>>> [10, 12, 14, 16, 18]

Этот же код в одну строку:

even_num_list=[num for num in range(10, 20) if num % 2 == 0]
print(even_num_list)>>> [10, 12, 14, 16, 18]

Здесь мы создаем список, содержащий только четные числа, с помощью цикла for и оператора if .

Вы можете использовать одну и ту же концепцию для создания различных типов списков.

3. операторы if-else

Обычная программа

age = 12
if age > 18:
print("Вы взрослый")
else:
print("Вы несовершеннолетний"")
>>> You are a Minor

Этот же код в одну строку:

result= "Вы взрослый" if age > 18 else "Вы несовершеннолетний"
print(result)>>> You are a Minor

Постановка задачи:

Если возраст мальчика/девушки меньше 18 лет, то он/она несовершеннолетний, тогда нам нужно напечатать: Вы несовершеннолетний или они Взрослые, и нам нужно напечатать: Вы взрослый

Здесь мы решаем эту проблему с помощью операторов if-and-else.

4. цикл for с оператором if-else

Обычная программа

num_list=[2,4,8,11,45,23,10]
even_num_count = 0
for num in num_list:
if num % 2 == 0:
num_list[num_list.index(num)] = '*'
else:
num_list[num_list.index(num)] = '#'
print(num_list)
>>> ['*', '*', '*', '#', '#', '#', '*']

Этот же код в одну строку:

num_list=[1,2,4,8,11,45,23,10]
print(['*' if num%2==0 else '#' for num in num_list])
>>> ['*', '*', '*', '#', '#', '#', '*']

Постановка задачи:

Если число четное, замените его на «*» или, в противном случае, замените на «#».

Здесь мы решаем эту проблему, используя операторы цикла for и if-else.

5. Двойной цикл

Обычная программа:

num_list = []
for num1 in range(1, 3):
for num2 in range(1, 4):
num_list.append((num1 ,num2))
print(num_list)
>>> [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)]

Этот же код в одну строку:

result=[(num1,num2) for num1 in range(1, 3) for num2 in range(1, 4)]
print(result)
>>> [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)]

6. Множественные присвоения

Обычная программа:

a,b,c = 1, 2.5, 6
print("a: {}, b: {}, c: {}".format(a,b,c))
>>> a: 1, b: 2.5, c: 6

Здесь мы присваиваем несколько значений нескольким переменным.

a, b, *c =[1,2,3,4,5,6,7]
print("a: {}, b: {}, c: {}".format(a,b,c))
>>> a: 1, b: 2, c: [3, 4, 5, 6, 7]

7. Поменяем местами две переменные

a, b = 5, 9
a, b = b, a

Здесь мы просто меняем местами два числа.

8. Чтение файлов

lst = [line.strip() for line in open('data.txt')]
print(lst)

Здесь мы просто читаем текстовый файл.

9. Лямбда-функция

num_sqr=lambda x: x**2
num_sqr(10)
>>> 100

Лямбда-функция — это небольшая анонимная функция.

Лямбда-функция может принимать любое количество аргументов, но она может иметь только одно выражение.

Здесь мы вычисляем квадратный корень из числа.

multiple_two_nums = lambda x,y: x * y
multiple_two_nums(10,20)
>>> 200

Здесь мы умножаем два числа, используя лямбда-функцию.

nums = [34, 23, 56, 89, 44, 92]
odds = list(filter(lambda x: x % 2 != 0, nums))
print(odds)
>>> [23, 89]

Здесь мы фильтруем нечетные числа из списка, используя функцию filter

filter()

Функция filter() принимает два аргумента:

a. function — a function

b. iterable — (sets, lists, tuples, etc.)

Функция возвращает итератор, в котором фильтруются элементы .

def filter_odd_number(number):
if number % 2==1:
return True
else:
return False
for num in filter(filter_odd_number, [7,5,6,7,8]):print(num)
>>>
7
5
7

10. Приведение типов всего списка

string_list = ['1','2','3','4','5','6']
int_list = list(map(int, string_list))
>>> [1, 2, 3, 4, 5, 6]
-------------------------------or--------------------------------
int_list = [int(i) for i in string_list]
>>> [1, 2, 3, 4, 5, 6]
float_list = list(map(float, int_list))
>>> [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
-------------------------------or---------------------------------
float_list = [float(i) for i in int_list]
>>> [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]

функция map()

функция map принимает два параметра:

function — функция, которая выполняет какое-либо действие с каждым элементом итерируемого списка

iterable — набор переменных/элементов, таких как наборы, списки, кортежи и т. д.

Спасибо за внимание!

Канал для изучения Машинного обучения: https://t.me/ai_machinelearning_big_data

Канал для изучения python: https://t.me/pythonl