Python


terminal

sys.stdin

is a file-like object on which you can call functions read or readlines if you want to read everything or you want to read everything and split it by newline automatically. you need to import sys for this to work

import sys
  
for line in sys.stdin:
print(line)

with prompt

Python also has built-in functions input([prompt]) :

name = input(“Enter your name: ”)
pass it an optional prompt to output

so


function

def funcname (param1,…,paramn)
    exp1
    exp2
    …
    return exp

( NB: use tabulation )

lambda

    lambda par1, …, parn: body

map

    q = map (math.sqrt, [2,3,4])

reduce

    p = reduce ((lambda x, z : x * z) , [1,2,3])

filter

    s = filter ((lambda x: x > 2), [1,2,3,4,5,6])

HOF

   def summation(nums):
       return sum(nums)

   def action(func, numbers):
       return func(numbers)

   print(action(summation, [1, 2, 3]))

math

sqrt(x)
return the square root of x

sin(x)
return the sine of x (measured in radians)
cos(x)
return the cosine of x (measured in radians)
tan(x)
return the tangent of x (measured in radians)
acos(x)
return the arc cosine (measured in radians) of x
asin(x)
return the arc sine (measured in radians) of x
atan(x)
return the arc tangent (measured in radians) of x
atan2(y, x)
return the arc tangent (measured in radians) of y/x. Unlike atan(y/x), the signs of both x and y are considered
acosh(x)
return the inverse hyperbolic cosine of x
asinh(x)
return the inverse hyperbolic sine of x
atanh(x)
return the inverse hyperbolic tangent of x
cosh(x)
return the hyperbolic cosine of x
sinh(x)
return the hyperbolic sine of x
tanh(x)
return the hyperbolic tangent of x
radians(x)
convert angle x from degrees to radians
degrees(x)
convert angle x from radians to degrees

fabs(x)
return the absolute value of the float x
ceil(x)
return the ceiling of x as a float
floor(x)
return the floor of x as a float
trunc(x:Real)
truncates x to the nearest Integral toward 0

exp(x)
return e raised to the power of x
log(x[, base])
return the logarithm of x to the given base. If the base not specified, returns the natural logarithm (base e) of x
log10(x)
return the base 10 logarithm of x
pow(x, y)
return x**y (x to the power of y)

factorial(x)
find x!. raise a ValueError if x is negative or non-integral
fsum(iterable)
return an accurate floating point sum of values in the iterable
hypot(x, y)
return the Euclidean distance, sqrt(x*x + y*y)

e = 2.718281828459045
pi = 3.141592653589793

>>> import math
  >>> print (f’The value of pi is approximately {math.pi:.3f}.’)

array

array.append(х)
добавление элемента в конец массива
array.byteswap()
изменить порядок следования байтов в каждом элементе массива. Полезно при чтении данных из файла, написанного на машине с другим порядком байтов
array.count(х)
возвращает количество вхождений х в массив
array.extend(iter)
добавление элементов из объекта в массив
array.frombytes(b)
делает массив array из массива байт. Количество байт должно быть кратно размеру одного элемента в массиве
array.fromfile(File, N)
читает N элементов из файла File и добавляет их в конец массива. файл должен быть открыт на бинарное чтение. если доступно меньше N элементов, генерируется исключение EOFError , но элементы, которые были доступны, добавляются в массив
array.fromlist(список)
добавление элементов из списка
array.index(х)
номер первого вхождения x в массив
array.insert(n, х)
включить новый пункт со значением х в массиве перед номером n. Отрицательные значения рассматриваются относительно конца массива
array.pop(i)
- удаляет i-ый элемент из массива и возвращает его. По умолчанию удаляется последний элемент
array.remove(х)
удалить первое вхождение х из массива
array.reverse()
обратный порядок элементов в массиве
array.tobytes()
преобразование к байтам
array.tofile(f)
запись массива в открытый файл
array.tolist()
преобразование массива в список

list

списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться)

чтобы использовать списки, их нужно создать. создать список можно несколькими способами. можно обработать любой итерируемый объект (например, строку) встроенной функцией list:

>>> list('список')
['с', 'п', 'и', 'с', 'о', 'к']
список можно создать и при помощи литерала [] :
>>> s = []  # Пустой список
>>> l = ['s', 'p', ['isok'], 2]
>>> s
[]
>>> l
['s', 'p', ['isok'], 2]

список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего

list.append(x)
добавляет элемент в конец списка
list.extend(L)
расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x)
вставляет на i-ый элемент значение x
list.remove(x)
удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
list.pop([i]
) удаляет i-ый элемент и возвращает его. если индекс не указан, удаляется последний элемент
list.index(x, [start [, end]])
возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
list.count(x)
возвращает количество элементов со значением x
list.sort([key=f])
сортирует список на основе функции f
list.reverse()
разворачивает список
list.copy()
поверхностная копия списка
list.clear()
очищает список

dictionary

создать словарь можно несколькими способами. с помощью литерала {} :

>>> d = {}
>>> d
{}
>>> d = {'dict': 1, 'dictionary': 2}
>>> d
{'dict': 1, 'dictionary': 2}

с помощью функции dict :

>>> d = dict(short='dict', long='dictionary')
>>> d
{'short': 'dict', 'long': 'dictionary'}
>>> d = dict([(1, 1), (2, 4)])
>>> d
{1: 1, 2: 4}

с помощью метода fromkeys :

>>> d = dict.fromkeys(['a', 'b'])
>>> d
{'a': None, 'b': None}
>>> d = dict.fromkeys(['a', 'b'], 100)
>>> d
{'a': 100, 'b': 100}

прямой декларацией:

>>> table = {’Sjoerd’: 4127, ‘Jack’: 4098, ‘Dcab’: 7678}
>>> for name, phone in table.items():
… print(f’{name:10} ==> {phone:10d}’)

dict.get(key [, default])
возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None)
dict.pop(key [, default])
удаляет ключ и возвращает значение. если ключа нет, возвращает default (по умолчанию бросает исключение)
dict.popitem()
удаляет и возвращает пару (ключ, значение). если словарь пуст, бросает исключение KeyError
dict.setdefault(key [, default])
возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None)

dict.fromkeys(seq [, value])
создает словарь с ключами из seq и значением value (по умолчанию None)
dict.copy()
возвращает копию словаря
dict.clear()
очищает словарь

dict.items()
возвращает пары (ключ, значение)
dict.keys()
возвращает ключи в словаре
dict.values()
возвращает значения в словаре

dict.update([other])
обновляет словарь, добавляя пары (ключ, значение) из other. существующие ключи перезаписываются. возвращает None (!)

set

>>> a = set()
>>> a
set()
>>> a = set('hello')
>>> a
{'h', 'o', 'l', 'e'}
>>> a = {'a', 'b', 'c', 'd'}
>>> a
{'b', 'c', 'a', 'd'}
>>> a = {i ** 2 for i in range(10)} # генератор множеств
>>> a
{0, 1, 4, 81, 64, 9, 16, 49, 25, 36}
  

set.isdisjoint(other)
истина, если set и other не имеют общих элементов
set.issubset(other)
все элементы множества принадлежат other
set.issuperset(other)
все элементы other принадлежат множеству
set.union(other, ...)
объединение множеств
set.intersection(other, ...)
пересечение множеств
set.difference(other, ...)
множество из всех элементов, не принадлежащих other
set.symmetric_difference(other)
множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих
set.copy()
создать копию множества
set.update(other , ...)
объединение
set.intersection_update(other, ...)
пересечение
set.difference_update(other, ...)
разность
set.symmetric_difference_update(other)
множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих
set.add(elem)
- добавляет элемент в множество
set.remove(elem)
удаляет элемент из множества. KeyError, если такого элемента не существует
set.discard(elem)
удаляет элемент, если он находится в множестве
set.pop()
удаляет первый элемент из множества. множества не упорядочены - нельзя точно сказать, какой элемент будет удален (!)
set.clear()
очистка множества

io

>>> f = open(‘workfile’, ‘w’)
>>> with open(‘workfile’) as f:
… read_data = f.read()
>>> f.close()

>>> f.readline()
‘This is the first line of the file.\n’
>>> f.readline()
‘Second line of the file\n’

>>> for line in f:
… print(line, end=’’)
…
This is the first line of the file.
Second line of the file

>>> f.write(‘This is a test\n’)
15

>>> value = (‘the answer’, 42)
>>> s = str(value) # convert the tuple to string
>>> f.write(s)
18

>>> f = open(‘workfile’, ‘rb+’)
>>> f.write(b’0123456789abcdef’)
16
>>> f.seek(5) # Go to the 6th byte in the file
5
>>> f.read(1)
b’5’
>>> f.seek(–3, 2) # Go to the 3rd byte before the end
13
>>> f.read(1)
b’d’

json

>>> import json
>>> json.dumps([1, ‘simple’, ‘list’])
’[1, “simple”, “list”]

variant of the dumps() function, called dump() , simply serializes the object to a text file. so if f is a text file object opened for writing, we can do this:

   json.dump(x, f)

to decode the object again, if f is a text file object which has been opened for reading:

  x = json.load(f)

this simple serialization technique can handle lists and dictionaries