Technical Flashcards

You may prefer our related Brainscape-certified flashcards:
1
Q

В чем разница между списком и кортежем?

A

1) Список можно изменить после создания.
2) Кортеж нельзя изменить после создания.
3) Список упорядочен. Он представляет собой упорядоченные последовательности объектов, как правило, одного и того же типа. Например, все имена пользователей упорядочены по дате создания: [«Seth», «Ema», «Eli»].
4) У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти: (2, «Ema», «2020–04–16») # id, name, created_at.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Как выполняется интерполяция строк?

A

интерполяция - подстановка

name = ‘Chris’

  1. f strings
    print(f’Hello {name}’)
  2. % operator
    print(‘Hey %s %s’ % (name, name))
  3. format
    print(
    “My name is {}”.format((name))
    )
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

В чем разница между “is” и “==”?

A

is проверяет идентичность (ссылается на тот же объект), а == проверяет равенство (одинаковость).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое декоратор?

A

Декоратор позволяет добавить новую функциональность к существующей функции. Например, замеряет время работы функции или выводит логи

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Объясните функцию range

A

Range генерирует список целых чисел. Ее можно использовать тремя способами.

range(stop): генерирует целые числа от 0 до целого числа stop:

range(start, stop): генерирует целые числа от start до stop

range(start, stop, step): генерирует целые числа от start до stop с интервалами step:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Определите класс car с двумя атрибутами: color и speed. Затем создайте экземпляр и верните speed

A

class Car :
def __init__(self, color, speed):
self.color = color
self.speed = speed
car = Car(‘red’,’100mph’)
car.speed
#=> ‘100mph’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

В чем разница между методами экземпляра, класса и статическими методами в Python?

A

Методы экземпляра: принимают параметр self и относятся к определенному экземпляру класса.

Статические методы: используют декоратор @staticmethod, не связаны с конкретным экземпляром и являются автономными (атрибуты класса или экземпляра не изменяются).

Методы класса: принимают параметр cls, можно изменить сам класс.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

В чем разница между func и func()?

A

func — это представляющий функцию объект, который можно назначить переменной или передать другой функции.

Функция func() с круглыми скобками вызывает функцию и возвращает результат.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Объясните, как работает функция map

A

Она возвращает объект (итератор), который перебирает значения, применяя функцию к каждому элементу.

def add_three(x):
return x + 3
li = [1,2,3]
list(map(add_three, li))
#=> [4, 5, 6]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Объясните, как работает функция reduce

A

reduce принимает функцию и последовательность — и проходит по этой последовательности. На каждой итерации в функцию передаются как текущий элемент, так и выходные данные предыдущего элемента. В конце концов, возвращается одно значение:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Объясните, как работает функция filter

A

Каждый элемент начальной последовательности передается функции, которая включает его в последовательность, если по условию получает True, и отбрасывает в случае False

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Переменные в Python передаются по ссылке или по значению?

A

все имена передаются по ссылке, но в некоторых ячейках памяти хранятся объекты, а в других — указатели на другие ячейки памяти.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как развернуть список?

A

.reverse() вызывается в списке и изменяет его

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как работает умножение строк?

A

Посмотрим результат умножения строки ‘cat’ на 3:

‘cat’ * 3
#=> ‘catcatcat’

В результате содержимое строки повторяется трижды.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Как работает умножение списка?

A

Посмотрим на результат умножения списка [1,2,3] на 2:

[1,2,3] * 2
#=> [1, 2, 3, 1, 2, 3]

Содержание списка [1,2,3] повторяется дважды.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что означает self в классе?

A

Self ссылается на экземпляр класса. Так метод может обновлять объект, к которому принадлежит.

Ниже передача self в __init__() дает возможность установить цвет экземпляра при инициализации:

class Shirt:
def __init__(self, color):
self.color = color

s = Shirt(‘yellow’)
s.color
#=> ‘yellow’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как объединить списки в Python?

A

Списки объединяются при сложении. Обратите внимание, что с массивами так не получается:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

В чем разница между глубокой и мелкой копиями?

A

Для неизменяемых объектов глубокое и мелкое (поверхностное) копирование обычно не отличаются.

Мелкая копия создает новый объект, но заполняет его ссылками на оригинал.

copy.deepcopy(). Оригинал и копия полностью независимы, а изменения в одном не оказывают никакого влияния на другой:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

В чем разница между списками и массивами?

A

Примечание: в стандартной библиотеке Python есть объект array, но здесь мы специально обсуждаем массив из популярной библиотеки Numpy.

Списки в каждом индексе можно заполнять разными типами данных. Массивы требуют однородных элементов.

Арифметические действия в списках добавляют или удаляют элементы из списка. Арифметические действия на массивах соответствуют функциям линейной алгебры.

Массивы используют меньше памяти и обладают значительно большей функциональностью.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Как объединить два массива?

A

Помните, что массивы — это не списки. Это библиотека Numpy и здесь работает линейная алгебра.

Для объединения массивов нужно использовать соответствующую функцию Numpy .concatenate:

import numpy as np

a = np.array([1,2,3])
b = np.array([4,5,6])

np.concatenate((a,b))
#=> array([1, 2, 3, 4, 5, 6])

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Что вам нравится в Python?

A

Python очень удобочитаем, и есть так называемый «питоновский способ» решения почти любой задачи, то есть самый понятный, ясный и лаконичный код.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Какая ваша любимая библиотека в Python?

A

с точки зрения статистики pandas - использовалась во всех проектах, эмоционально - sklearn. Обожаю точные прогнозы

23
Q

Назовите изменяемые и неизменяемые объекты

A

Неизменяемость означает, что состояние нельзя изменить после создания. Примеры: int, float, bool, string и tuple.

Состояние изменяемых объектов можно изменить. Примеры: list, dict и set.

24
Q

Как округлить число до трех десятичных знаков?

A

Используйте функцию round(value, decimal_places):

25
Q

Как разбить список?

A

Срез list[start:stop:step]

26
Q

Что такое pickle?

A

это модуль сериализации и десериализации объектов в Python.

“Pickling” - процесс преобразования объекта Python в поток байтов, а “unpickling” - обратная операция, в результате которой поток байтов преобразуется обратно в Python-объект.

27
Q

Какая разница между словарями и JSON?

A

Dict (словарь) — это тип данных Python, представляющий собой набор индексированных, но неупорядоченных пар ключ-значение.

JSON — просто строка, которая следует заданному формату и предназначена для передачи данных.

28
Q

Какие ORM вы использовали в Python?

A

Технология ORM (object-relational mapping, объектно-реляционное отображение) связывает модели данных (обычно в приложении) с таблицами БД и упрощает транзакции с базой данных.

В контексте Flask обычно используется SQLAlchemy, а у Django собственная ORM.

29
Q

Как работают any() и all()?

A

Any возвращает true, если хоть один элемент в последовательности соответствует условию, то есть является true.

All возвращает true только в том случае, если условию соответствуют все элементы в последовательности.

30
Q

Где быстрее поиск: в словарях или списках?

A

Поиск значения в списке занимает O(n) времени, потому что нужно пройти весь список.

Поиск ключа в словаре занимает O(1) времени, потому что это хэш-таблица.

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

31
Q

В чем разница между модулем и пакетом?

A

Модуль — это файл или набор файлов, которые импортируются вместе:

import sklearn
Пакет — это каталог с модулями:

from sklearn import cross_validation
Таким образом, пакеты — это модули, но не все модули являются пакетами.

32
Q

Как увеличить и уменьшить целое число в Python?

A

Инкремент и декремент можно сделать с помощью += и -=:

33
Q

Как вернуть двоичный код целого числа?

A

Используйте функцию bin():

34
Q

Как удалить из списка дубликаты?

A

Это можно сделать путем преобразования списка в набор, а затем обратно в список:

a = [1,1,1,2,3]
a = list(set(a))
print(a)
#=> [1, 2, 3]

Обратите внимание, что наборы не обязательно поддерживают порядок следования списка.

35
Q

Как проверить, существует ли значение в списке?

A

Используйте in:

‘a’ in [‘a’,’b’,’c’]
#=> True

‘a’ in [1,2,3]
#=> False

36
Q

В чем разница между append и extend?

A

append добавляет значения в список, а extend добавляет в список значения из другого списка:

37
Q

Как получить абсолютное значение целого числа?

A

Это можно сделать с помощью функции abs()

38
Q

Как объединить два списка в список кортежей?

A

Для объединения в список кортежей можно использовать функцию zip, причем не только двух, но трех и более списков.

a = [‘a’,’b’,’c’]
b = [1,2,3]

[(k,v) for k,v in zip(a,b)]
#=> [(‘a’, 1), (‘b’, 2), (‘c’, 3)]

39
Q

Как отсортировать словарь по ключам, в алфавитном порядке?

A

Нельзя «отсортировать» словарь, поскольку словари не поддерживают упорядочение, но можно вернуть отсортированный список кортежей с ключами и значениями из словаря:

d = {‘c’:3, ‘d’:4, ‘b’:2, ‘a’:1}

sorted(d.items())
#=> [(‘a’, 1), (‘b’, 2), (‘c’, 3), (‘d’, 4)]

40
Q

Как реализуется наследование классов в Python?

A

В приведенном ниже примере класс Audi является наследником Car. И вместе с этим наследуются методы экземпляра родительского класса:

class Car():
def drive(self):
print(‘vroom’)
class Audi(Car):
pass
audi = Audi()
audi.drive()

41
Q

Как удалить все пробелы из строки?

A

Можно разделить строку в местах пробелов, а затем снова соединить без пробелов:

s = ‘A string with white space’

’‘.join(s.split())
#=> ‘Astringwithwhitespace’

Двое читателей рекомендовали более каноничный способ замены

s = ‘A string with white space’
s.replace(‘ ‘, ‘’)
#=> ‘Astringwithwhitespace’

42
Q

Почему мы используем enumerate() при итерации последовательности?

A

enumerate() позволяет отслеживать индекс при итерации последовательности. Это более нативный способ, чем определение и приращение целого числа, представляющего индекс

43
Q

В чем разница между pass, continue и break?

A

Заглушка pass означает «ничего не делать». Обычно мы используем эту функцию, потому что Python не позволяет создавать класс, функцию или оператор if без кода внутри.

continue отправляет вас к следующему элементу в цикле, останавливая выполнение для текущего элемента.

break прерывает цикл, и последовательность больше не повторяется.

44
Q

Преобразуйте следующий цикл for в генератор списков (list comprehension)

a = [1,2,3,4,5]

a2 = []
for i in a:
a2.append(i + 1)
print(a2)
#=> [2, 3, 4, 5, 6]

A

a3 = [i+1 for i in a]

print(a3)
#=> [2, 3, 4, 5, 6]

Генератор списка обычно считается более каноническим способом в Python, если он остается понятным.

45
Q

Приведите пример тернарного оператора

A

Тернарный (условный) оператор — это однострочный оператор if/else.

x = 5
y = 10

‘greater’ if x > 6 else ‘less’
#=> ‘less’

‘greater’ if y > 6 else ‘less’
#=> ‘greater’

46
Q

Проверьте, что в строке только числа

A

Можно использовать isnumeric():

‘123a’.isnumeric()
#=> False

‘123’.isnumeric()
#=> True

47
Q

Проверьте, что в строке только буквы

A

Можно использовать isalpha():

‘123a’.isalpha()
#=> False

‘a’.isalpha()
#=> True

48
Q

Проверьте, что в строке только буквы и цифры

A

Здесь можно использовать isalnum():

‘123abc…‘.isalnum()
#=> False

‘123abc’.isalnum()
#=> True

49
Q

Получите список ключей из словаря

A

Это можно сделать через передачу словаря в конструктор list():

d = {‘id’:7, ‘name’:’Shiba’, ‘color’:’brown’, ‘speed’:’very slow’}

list(d)
#=> [‘id’, ‘name’, ‘color’, ‘speed’]

50
Q

Как перевести строку в верхний/нижний регистр?

A

Можно использовать строковые методы upper() и lower():

small_word = ‘potatocake’
big_word = ‘FISHCAKE’

small_word.upper()
#=> ‘POTATOCAKE’

big_word.lower()
#=> ‘fishcake’

51
Q

В чем разница между remove, del и pop?

A

remove() удаляет первое совпадающее значение

del удаляет элемент по его индексу

pop() удаляет элемент по индексу и возвращает этот элемент:

52
Q

Приведите пример генератора словарей (dict comprehension)

A

Ниже мы создадим словарь с буквами алфавита в качестве ключей и индексами в качестве значений:

создаем список букв
import string
list(string.ascii_lowercase)
alphabet = list(string.ascii_lowercase)

генерация словаря
d = {val:idx for idx,val in enumerate(alphabet)}

d
#=> {‘a’: 0,
#=> ‘b’: 1,
#=> ‘c’: 2,
#=> …
#=> ‘x’: 23,
#=> ‘y’: 24,
#=> ‘z’: 25}

53
Q

Как выполняется обработка исключений в Python?

A

Для обработки исключений Python предоставляет конструкцию из трех слов: try, except и finally.