Python Flashcards

(53 cards)

1
Q

Написать функцию, которая принимает строку и возвращает словарь: слово → количество вхождений. (2 способа)

A

1)
def count_words(s: str) -> dict:
arr = s.split(‘ ‘)
result = {}
for el in arr:
if el in result:
result[el] += 1
else:
result[el] = 1
return result

2)
from collections import Counter
def count_words(s: str) -> dict:
return dict(Counter(s.split()))

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

Чтение файла в json

A

import json

with open(“logs.txt”, “r”) as f:
data = json.load(f)

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

Есть файл logs.txt, где каждая строка — JSON:

{“user_id”: 1, “event”: “login”, “timestamp”: “2025-11-19T10:01:00”}
{“user_id”: 2, “event”: “purchase”, “timestamp”: “2025-11-19T10:02:00”}
{“user_id”: 1, “event”: “login”, “timestamp”: “2025-11-19T10:05:00”}

Нужно:
Посчитать количество событий каждого типа (login, purchase, …) и вывести топ-3 самых частых.

A

import json
from collections import Counter

def top_events(filename: str, top_n: int = 3):
counter = Counter()

with open(filename, 'r') as f:
    for line in f:
        if not line.strip():   # пропустить пустые строки
            continue
        
        event = json.loads(line)
        event_type = event["event"]
        
        counter[event_type] += 1

return counter.most_common(top_n)
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

Как можно интерполировать строки?

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
6
Q

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

A

is - проверяет идентичность, смотрит id и сравнивает.
== проверяет равенство, смотрит значения и сравнивает.

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

Получить значения dict в виде кортежей (ключ, значение)

A

d.items()

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

Сортировка по значениям по убыванию dict

A

dict(sorted(result.items(), key=lambda x: x[1], reverse=1))

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

Как удалить символ в строке python

A

s.replace(“x”, “”)

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

Дан список строк. Нужно сгруппировать их так, чтобы в одной группе были только анаграммы.

Пример:

[“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]

Ответ:

[[“eat”, “tea”, “ate”], [“tan”, “nat”], [“bat”]]

A
from collections import defaultdict

result = defaultdict(list)

for s in arr: 
	result["".join(sorted(s))].append(s)

for key, value in result.items():
	print(value)
	
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Как проверить наличие ключа и значения в словаре

A

1) Ключа
if key in d:
pass

2) Значения
if value in d.values():
pass

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

Пример декоратора

A

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

def my_decorator(func):
    def wrapper(*args, **kwargs):
        # код до вызова функции
        result = func(*args, **kwargs)
        return result
    return wrapper

@my_decorator
def hello():
    print("Hello!")
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

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

A

Создаёт последовательность чисел.
Часто используется в циклах for.

1) range(stop)
От 0 до stop (не включая):
range(5) # 0,1,2,3,4

2) range(start, stop)
От start до stop (не включая):
range(2, 6) # 2,3,4,5

3) range(start, stop, step)
С шагом step:
range(1, 10, 2) # 1,3,5,7,9
range(10, 0, -1) # 10,9,8,…,1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

data = [
“Alice,30,London”,
“Bob,25,Berlin”,
“Charlie,35,Paris”
]

Напиши код, который с помощью map преобразует этот список в список словарей:

[
{“name”: “Alice”, “age”: 30, “city”: “London”},
{“name”: “Bob”, “age”: 25, “city”: “Berlin”},
{“name”: “Charlie”, “age”: 35, “city”: “Paris”}
]

A

def get_dict(row):
res = row.split(“,”)
return {“name”: res[0], “age”: int(res[1]), “city”: res[2]}

d = list(map(get_dict, data))

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

Как добавить в один список элементы другого?
И в чем разница?

A

Добавить один элемент:
arr1.append(3)
Добавить несколько:
arr2 = [3, 4]
arr1.extend(arr2)
Создать новый список:
arr2 = arr1 + [2]

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

Как .split() делит по умолчанию?

A

Разделитель по умолчанию — любой пробельный символ.

Это может быть:
* пробел “ “
* табуляция \t
* перенос строки \n
* несколько пробелов подряд
* смесь табов и пробелов

split() воспринимает всё это как одно разделение.

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

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

A

arr = [“a”, “b”, “c”]
new_str = “ “.join(arr)

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

Как проверить пустой ли список?

A

if not arr:
print(“Пустой”)
else:
print(“Не пустой”)

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

Как взять любой элемент из списка?

A

import random

arr = [1, 2, 3, 4]
x = random.choice(arr)
print(x)

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

Как проверить принадлежит ли переменная типу string?

A

1)
if type(var) is str:
print(“YES”)

3)
if isistance(var, str):
print(“YES”)

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

В Python логические операции определены исключительно для булевых величин?

A

Нет, так тоже может быть:
print(1 and 0) # 0

23
Q

Что такое распаковка в python?

A
  • → распаковывает последовательности (списки, кортежи)

** → распаковывает словари

24
Q

Что такое композиция?

A

Это возможность объекта содержать другой объект как свой атрибут

25
Тернарный оператор
x if cond else y
26
Операторы управления потоком
break, continue, return, yield
27
Что за @property?
@property — это способ представить метод как атрибут, сохранив инкапсуляцию и не меняя интерфейс класса.
28
Как сделать список объектом numpy?
arr = np.array([1,2,3])
29
Сделать массив заполненный нулями (numpy)
np.zeros()
30
Заполнить единицами массив (numpy)
np.ones((1, 2)) (1, 2) - размеры
31
Как просто инициализировать массив определленого размера без значений (numpy)
np.empty()
32
Как сделать массив в диапазоне чисел? (numpy)
np.arange(start, end, step)
33
Сделать массив размазанный в диапазоне?
np.linspace() Линейное распределение
34
Создать массив и заполнить определенными значениями (numpy)
np.full(shape, fill_value)
35
Как найти среднее значение по колонке pandas?
df["column"].mean()
36
Как отфильтровать тех, кто старше 30 pandas?
df[df['age'] > 30]
37
Как сортировать в pandas с учетом убывания?
.sort_values("column", ascending=False)
38
Чем генератор отличается от списка?
Генератор - ленивые вычисления, не хранит весь результат в памяти, а выдает элементы по одному. yield. Итерируется только один раз Список - хранит все элементы. return. Можно итерировать сколько угодно.
39
Сложности алгоритмов
O(1) - константная доступ по индексу, размер данных не важен. O(log n) - логарифмическая, бинарный поиск, хождение по дереву. O(n) - линейная, идем один раз по массиву. O(n log n) - линейно логарифмическая, делим обрабатываем (быстрая сортировка) O(n*n) - квадратичная, есть два фора. O(2^n) - экспоненциальная, пример: рекурсивный фибоначи, перебор всех подмножеств. O(n!) - факториальная, перебор всех перестановок
40
Как решать задачи?
1) Хорошо подумать и найти наиболее производительное решение 2) Продумать возможные тесты 3) Расписать все по шагам на листике 4) Реализовать в коде 5) Протестировать
41
Правильный декоратор
``` from functools import wraps def decorator(func): @wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper ```
42
Построение графика
import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [10, 15, 13, 18, 20] plt.plot(x, y) # линейный график plt.show() # отображение графика
43
Подводные камни с default arguments в функции
Если мы напишем func(arr=[]), то инциализация списка будет только один раз, а не при каждом вызовые функции, поэтому состояние списка будет сохранятся между вызовами - это нужно помнить.
44
Почему если в функции сделать: arr = another_arr, то внешний arr не поменяется?
Функция в Python не может изменить, на какой объект ссылается внешняя переменная — она может изменить только сам объект.
45
Как сдвинуть массив in-place? Input: nums = [1,2,3,4,5,6,7], k = 3 Output: [5,6,7,1,2,3,4] Как решить через O(1) памяти?
1) real_k = k % len(nums) nums[:] = nums[-real_k:] + nums[:-real_k] 2) n = len(nums) k %= n reverse(0, n - 1) reverse(0, k - 1) reverse(k, n - 1)
46
Зачем? if __name__ == "__main__"
Чтобы код запускался только тогда, когда мы напрямую его запускаем: python main.py Если мы импортируем такой файл, то код не запускается: import main.py
47
Разница ? arr = [1] arr.append((0,1)) arr += (0, 1)
1) [1, (0, 1)] 2) [1, (0, 1), 0, 1] += (сначала распакует, а потом уже добавит) append добавит структуру в список как есть
48
~
~x == -(x + 1)
49
Что выведет? def make_funcs(): funcs = [] for i in range(3): def f(): return i funcs.append(f) return funcs funcs = make_funcs() print([f() for f in funcs])
[2, 2 ,2] Чтобы было [0,1,2] надо запечь i как аргумент функции: def f(i=i) return i
50
Для чего библиотеки: shutil, tkinter, pickle, re, sys
shutil - Файлы и папки tkinter - Графический интерфейс pickle - Сохранение объектов Python re - регулярки sys - для работы с потоками и переменными окружения
51
Как дать числу значение бесконечность?
value = float('inf')
52
Абстракция в python
Абстракция: принцип, который определяет ориентир на ЧТО мы делаем, а не КАК делаем. В python мы можем создать абстрактный класс при помощи abc. Класс со структурой, которую должны реализовать все наследники. Если дочерний класс реализован не до конца, то будет возникать ошибка, что гарантирует правильное построение решения
53
def func(): try: return 1 finally: return 2 print(func()) Что выведет?
Выведет 2 return в finally побеждает перекрывает все остальные ретурны