Основные приемы и советы, которые помогут вам быстрее писать чистый и лаконичный код на Python.

Я пишу эту статью для тех, кто имеет небольшой опыт работы с Python и, вероятно, хочет использовать Python для решения проблем с кодированием во время размещения в кампусе (Заявление об отказе от ответственности: некоторые компании не предоставляют Python для решения проблем с кодированием, и несколько компаний не рекомендуется использовать Python, даже если он предусмотрен 👎).

К вашему сведению, я не буду учить здесь основам Python, и большинство трюков и советов работают как для Python3, так и для Python2. Если вы уже знакомы с ними, моя работа сделана 👏. В противном случае добро пожаловать.

Вход

Взять строку чисел, разбить ее и преобразовать в целые числа, числа с плавающей запятой или что-то еще в одной строке.

>>> a = list(map(int,input().split()))
1 2 3 4 5
>>> print(a)
[1,2,3,4,5]

Нить

Поиск подстроки? Используйте самый недооцененный оператор (на мой взгляд) в Python, оператор членства: in -

>>> "abc" in "zabcde"
True

Переворачивая струну?

>>> s = “nohtyP liah llA”
>>> s[::-1]
All hail Python

Два способа вставки элементов в строку -

>>> "{0}, {1}, {2}".format(1,'a',"python")
1, a, python
>>> "%d, %c, %s"%(1,'a',"python")
1, a, python

Хотите все буквы в верхнем или нижнем регистре?

>>> import string
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

Чтобы узнать больше о строковых методах, запустите help (string) в IDLE.

Список

Присвойте значения списка переменным -

>>> l = [1,2,3]
>>> a,b,c = l
>>> print(a,b,c)
1 2 3

Список строк в одну строку -

>>> l = ["All","Hail","Python"]
>>> " ".join(l)
'All Hail Python'

Понимание списков - это простой способ создать список -

>>> upper_list = [chr(x) for x in range(65,91)]
>>> upper_list
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
>>> odd_list = [x for x in range(10,30) if x%2!=0] # with conditions
>>> odd_list
[11, 13, 15, 17, 19, 21, 23, 25, 27, 29]
>>> char_list = [x for x in "abcde"]
>>> char_list
['a', 'b', 'c', 'd', 'e']

Распаковка и распаковка -

>>> a = [1,2,3]
>>> b = ['a','b','c']
>>> z = zip(a,b)    # zipping
>>> [x for x in z]
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> z1 = zip(*z)    # unzipping
>>> [x for x in z1]
[(1, 2, 3), ('a', 'b', 'c')]

Списки сортировки -

>>> a = [1,2,4,3,7,6,8,5]
>>> sorted(a)
[1, 2, 3, 4, 5, 6, 7, 8]
>>> sorted(a,reverse=True)
[8, 7, 6, 5, 4, 3, 2, 1]

Словарь

Доступ к ключам и значениям -

>>> d = {1:'a',2:'b',3:'c'}
>>> [x for x in d]    # prints keys
[1, 2, 3]
>>> [x for x in d.values()]
['a', 'b', 'c']

Понимание словаря -

>>> a = ['a','b','c']
>>> d = {x:a[x] for x in range(3)}
>>> d
{0: 'a', 1: 'b', 2: 'c'}

Итерации по спискам и словарю

Список -

>>> a = [chr(x) for x in range(65,70)]
>>> for i,x in enumerate(a):
        print(i,x)
0 A
1 B
2 C
3 D
4 E

Словарь -

>>> a = ['a','b','c']
>>> d = {x:a[x] for x in range(3)}
>>> for i,x in d.items():
        print(i,x)
0 a
1 b
2 c

Важный импорт

Counter и OrderedDict в коллекциях -

>>> from collections import Counter, OrderedDict
>>> # Counter is a dictionary subclass for counting objects
>>> a = ['a','b','c','a','c','a']
>>> c = Counter(a)
>>> {x:c[x] for x in c}
{'a': 3, 'b': 1, 'c': 2}
>>> # OrderedDict is a dictionary subclass that remembers the order in which elements were added
>>> d = OrderedDict()
>>> d['a'] = 1
>>> d['b'] = 2
>>> d['c'] = 3
>>> d['d'] = 4
>>> for key, value in d.items():
        print(key, value)
a 1
b 2
c 3
d 4

Имеете дело с матрицей? Используйте numpy -

>>> import numpy
>>> a=numpy.array([[1,2],[4,5],[7,8]])
>>>print(a)
[[1 2]
 [4 5]
 [7 8]]
>>> a.shape
(3,2)
>>> x=a.reshape(2,3)
>>> print(x)
[[1, 2, 4],
 [5, 7, 8]]
>>> Transpose and Flatten
>>> z=numpy.transpose(a)
>>> print(z)
[[1, 4, 7],
 [2, 5, 8]]
>>> print(a.flatten())
[1 2 4 5 7 8]

Замена двух чисел

Это так просто -

>>> a,b = 1,2
>>> b,a = a,b
>>> a,b
(2, 1)

Это неполный список уловок и советов, и со временем я буду добавлять новые. Если я что-то пропустил, укажите в комментариях 👇. Спасибо, что прочитали ✌️.