Подсчёт индекса вставки через sum()
@python_quizРазберем этот квиз
Условие (фрагмент кода)

Вопрос сводится к тому, какие числа выведет этот код.
Идея и логика
Выражение sum(1 for v in nums if v < x) считает количество элементов в списке nums строго меньше x. Такая сумма по сути даёт индекс вставки "слева" (left insertion index) для значения x в отсортированном списке — то есть позицию, куда вставить x так, чтобы все элементы слева были < x.
Для массива nums = [1, 3, 3, 5]:
- Для
x = 3считаем элементы строго меньше 3. В nums только 1 меньше 3 → результат 1. - Для
x = 4считаем элементы строго меньше 4. В nums 1, 3 и 3 меньше 4 → результат 3.
То есть ожидаемый вывод программы: 1 3
Демонстрация (запуск)

Альтернативный вариант: bisect_left
Стандартный модуль bisect даёт ту же семантику через функцию bisect_left — индекс, куда вставить элемент слева от равных элементов:

Анализ вариантов ответа
Допустим, были варианты:
- "1 2" — не совпадает с выводом.
- "2 2" — не совпадает с выводом.
- "1 3" — совпадает с выводом.
- "2 3" — не совпадает с выводом.
Выводы и совет
- sum(1 for v in seq if v < x) — простой и наглядный способ посчитать индекс вставки слева для неотсортированных списков (или когда важно явно считать элементы по условию).
- Для отсортированных списков используйте bisect_left — это и быстрее (логарифмическая сложность) и выразительнее.
- Обратите внимание на строгое сравнение <: равные элементы не считаются и оказываются правее позиции вставки.