Сегодня мы узнаем о полезных однострочниках в 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