Искусство программирования на языке Python. 🛠Администратор: @Dartrisen 💰Менеджер: @my_little_trump
Поделиться с друзьями:
Тернарный оператор в python
Тернарным оператором является сокращённая форма записи условного выражения if-else. Такой подход позволяет быстро проверить условие, а не писать несколько строчек оператора if. Зачастую это очень удобно, поскольку позволяет писать более компактный код, сохраняя его читабельность.
#if
2019-02-09 12:00:42
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
2019-02-08 19:00:14
Поскольку мой канал сосредоточен в основном на каких-либо хитрых фишках и тонкостях, предлагаю вашему вниманию канал одного моего знакомого.
Это относительно новый канал для python разработчиков. Хотя данный канал больше специализируется на backend разработке, на нем также публикуется много интересного материала для разработчиков другого профиля, например разработчиков ИИ и машинного обучения. Да и вообще в целом для разработчиков и тех, кому интересна сфера IT, будет интересно!👍
t.me/Channelpy
это #партнерский пост
2019-02-08 17:00:01
Перечисление
Если применить enumerate() к какому-либо итерируемому объекту, можно получить индекс объекта и сам объект. Опциональный аргумент в enumerate позволяет задать начальный индекс.
#enumerate #tips
2019-02-08 12:00:35
Unpacking
Создадим небольшой словарь из двух пар элементов ключ-значение, и попробуем его распаковать используя multiple assignment. Должно быть вы ожидали, что распаковка вернет вам два кортежа вида (ключ, значение), либо же мы получим ошибку. Однако, питон позволяет нам провести распаковку словаря, хотя и не возвращает пары ключ-значение. Вместо этого вы получите ключи.
Для того, чтобы вернуть именно пары ключ-значение, необходимо использовать dict.items() (работает в Python 3).
#tips
2019-02-07 19:00:49
Containment checking
Допустим, мы создаем небольшой список из пяти элементов и одно генераторное выражение. Если мы сейчас попробуем проверить, содержится ли число 5 в списке, то ответом будет True. С генераторным выраженим должно быть так же, верно? Попробуем проверить. Получаем, что 5 содержится и в нем. Но если мы поинтересуемся еще раз, содержится ли 5 в выражении, получим False.
Не забываем, что генераторное выражение не есть кортеж, для того чтобы создать кортеж, необходимо воспользоваться конструктором tuple().
#tips
2019-02-07 14:01:13
Способы чтения данных из файла
Допустим, нам нужно считать пары точек x, y из файла. Например, для того, чтобы в дальнейшем воспользоваться интерполяцией. Рассмотрим несколько способов, которыми мы можем воспользоваться.
1. Построчное считывание.
Ну, здесь все просто. Не забываем привести данные к типу float или int.
def load(filename):
data = []
with open(filename, “r”) as file:
for line in file:
data.append([float(item) for item in line.split()])
return data
2. С использованием функционального программирования.
Заменяем цикл в предыдущем выражении на map().
def load(filename):
with open(filename, “r”) as file:
data = [list(map(float, line.split())) for line in file]
return data
3. С использованием numpy.
Воспользуемся numpy.loadtxt().
def load(filename):
import numpy as np
dt = np.dtype([(“x”, float), (“y”, float)])
data = np.loadtxt(filename, dtype=dt)
return data
#file
2019-02-06 17:11:06
Несколько советов начинающим разработчикам
1. Хорошо написанный код сам себя документирует.
Если комментарии к вашему куску кода слишком запутаны, подумайте, может стоит переписать этот код.
2. Старайтесь использовать только подходящие для данной задачи инструменты.
Например, python хорош для анализа данных или для работы с web, но писать на нем PIC (particle-in-cell) солвер явно не стоит. Перед тем как усложнять что-либо, подумайте, а надо оно вам вообще?
3. Не бойтесь переписывать код.
Планируйте выбросить первый экземпляр программы. Вам в любом случае придется это сделать.
4. Изучите базовые структуры данных.
Связные списки, стэки, очереди, хэш-таблицы, двоичные деревья поиска - must have.
«Плохие программисты думают о коде. Хорошие программисты думают о структурах данных и их взаимосвязях», — Линус Торвальдс, создатель Linux.
2019-02-06 12:00:33
Параметры в iter
Обычно built-in функция iter() возвращает итератор от переданной последовательности.
Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.
Как пример, построчное считывание из файла до первого вхождения пустой строчки.
#iterator
2019-02-05 19:22:44
Цепочки сравнений (chaining comparison)
Python позволяет составлять произвольные цепочки сравнений, читаются они слева направо, a
2019-02-05 14:39:57