Python Lounge: работа и стажировки для программистов
4.09K subscribers
93 photos
1.17K links
Здесь можно найти интересующую вас работу и стажировки для программистов, а так же полезные статьи про Python.

Размещение вакансии только - @perezvonyubot

Ссылка на канал: @python_lounge

Мы входим в сеть promopoisk.com

Реклама: @adtgassetsbot
Download Telegram
Оператор pass делает абсолютно ничего, то есть совсем ничего. В ходе исполнения данного оператора ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо.

Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.

def func():
pass

Ну или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.

try:
any_function()
except:
pass

В общем, полезная штука, используйте.
​​Сортировка пузырьком

В Python уже есть встроенные функции сортировок массивов sort() и .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.

Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.

 def bubble_sort(array):
for i in range(len(array), 0, -1):
for j in range(1, i):
if array[j - 1] > array[j]:
tmp = array[j-1]
array[j-1] = array[j]
array[j] = tmp
return array

Для наглядности визуальная реализация сортировки представлена ниже. #алгоритм
Напоминаю, что у меня есть два собственных телеграм бота. Настоятельно прошу протестировать и написать мне, что думаете насчет этих проектов (ссылка на меня в описании канала).

@tweather_bot - основной проект, выдает погоду офигенском в визуальном формате, а фишка в том, что можно искать не только по городу, но и по улице или даже названию музея. Написал совместно основателем канала @dopamine_lacking.

@CasualCatsBot - простой и забавный бот, который выдает случайного котика из интернета. Написал быстренько чисто для расслабона, однако вышло прикольно.
Forwarded from Hello World
12 небольших фишек для улучшения твоего кода

1. Обмен значений
x, y = 1, 2
x, y = y, x


2. Получение строки из списка
a_list = [‘I’, ‘like’, ‘python’, ‘programming’]
a_string = “ “.join(a_list)


3. Разбиение строки на список
a_string = ‘I like python programming’
a_list = a_string.split()


4. Инициализация листа каким либо значением
[0]*1000 # лист, заполненный 1000 нулями
[1]*1000 # лист, заполненный 1000 единицами


5. Слияние словарей
x = {‘a’:1, ‘b’:2}
y = {‘c’:3, ‘d’:4}
z = {**x, **y}


6. Переворачивание строки
a = ‘My string’
a = a[::-1]


7. Возврат нескольких переменных из функции
def test(x,y):
return x,y
a,b = test(1,2)


8. Итерирование по словарю
a_dict = {‘a’:1, ‘b’:2, ’c’:3}
for k, v in a_dict.items():
print(‘{0}:{1}’.format(k, v))


9. Инициализация пустых контейнеров
a_list = list()
a_dict = dict()
a_set = set()
a_tuple = tuple()


10. Удаление символов в конце строки
my_string = ‘My string///‘
my_string.strip(‘/‘)


11. Проверка занимаемой объектом памяти
import sys
x = 1
print(sys.getsizeof(x))


12. Нахождение наиболее частого элемента в списке
a_list = [1, 2, 3, 1, 1, 4, 1, 4, 4, 1]
print(max(set(a_list), key=a_list.count))


#tips
Если вы хотите итерировать несколько, например, списков, то функция zip станет хорошим выбором. Она возвращает новый список кортежей, в которых находятся попарно элементы из списков.

nums = [1, 2, 3]
words = ['one', 'two', 'three']

for w, n in zip(words, nums):
print(f'{w} = {n}')

# one = 1
# two = 2
# three = 3


Обратите внимание, что zip принимает итерируемые объекты как отдельные аргументы, а не как список аргументов. Чтобы распаковать значения, вы можете использовать оператор *.

list(zip(*zip(words, nums)))
# [('one', 'two', 'three'), (1, 2, 3)]
Функция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов. По факту она также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:

>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
nameless@pycoders:~$

Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.

import sys

try:
# code
except:
sys.exit()
In : int('୧৬𝟙༣')
Out: 1613

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.

Это влияет на такие функции, как int, unicode.isdecimal и даже re.match:

In : int('෯')
Out: 9

In : '٢'.isdecimal()
Out: True

In : bool(re.match('\d', '౫'))
Out: True
Иногда приходится писать код с несколькими контекстными менеджерами, что выглядит не особо лаконично:

with open('f') as f:
with open('g') as g:
with open('h') as h:
pass


Начиная с Python 2.7 и 3.1, вы можете использовать всего один with:

o = open
with o('f') as f, o('g') as g, o('h') as h:
pass


До этого вы могли бы использовать функцию nested из contextlib:

from contextlib import nested
with nested(o('f'), o('g'), o('h')) as (f, g, h):
pass
В Python блок else может быть представлен не только после if, но и после for и while. Код внутри else выполняется, только если цикл не был прерван с помощью break.

Типичный пример - поиск чего-либо в цикле с использованием break при нахождении:

for х in [2, 3, 4, 5]:
if x % 2 == 1:
print (x)
break
else:
print('Нет нечётных элементов в списке')

# Output: 3

for х in [2, 4, 6]:
if x % 2 == 1:
print(x)
break
else:
print('Нет нечётных элементов в списке')

# Output: Нет нечётных элементов в списке
В Python имя переменной может состоять из одного подчеркивания: _. Хотя обычно такие имена не достаточно описательны и не должны использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.

Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:

>>> 2 + 2
4
>>> _
4


Во-вторых, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода.

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

for _ in range(10):
print('Hello!')