Нужно преобразовать user_ids = [1, -1, 2] в список строк только для положительных значений. Какой вариант обычно читается проще?

A[str(x) for x in user_ids if x > 0]
Blist(map(str, filter(lambda x: x > 0, user_ids)))
Cmap(str, user_ids)
Dfilter(lambda x: str(x) > 0, user_ids)
Правильный ответ. Когда нужно и отфильтровать, и преобразовать элементы, list comprehension часто читается прямее, чем filter() + map() с lambda.

Разбор

Вариант [str(x) for x in user_ids if x > 0] выглядит как обычная формулировка задачи: «возьми str(x) для каждого x, если x > 0». Вариант с map()/filter() добавляет вложенность и анонимную функцию, что усложняет чтение.

Проверь себя · 1/3разбор после ответа
У вас есть список словарей users с ключами id и is_active. Нужно получить список id только активных пользователей. Какое решение обычно проще читать, чем комбинация map() + filter() с lambda?
Тренировать Python в Telegram

Ещё вопросы по теме «Генераторы списков и встроенные функции»