Срочно, пожалуйста, у меня меньше часа
Как можно сократить этот код, если значения в скобках всегда разные?
Это уже не сократить for i in range(n)...
Ответы на вопрос
Если отличается только индекс в квадратных скобках, то код обычно сокращают циклом. Это не «хуже» ручного перечисления — наоборот, цикл и есть нормальный способ убрать повторения.
Например, вместо:
Pythona[0] = b[0] + 1
a[1] = b[1] + 1
a[2] = b[2] + 1
пишут:
Pythonfor i in range(n):
a[i] = b[i] + 1
где n — нужное число элементов.
Если индексы не идут подряд, range(n) не подойдёт, но можно перечислить их явно:
Pythonfor i in (2, 5, 9, 14):
a[i] = b[i] + 1
Если одновременно меняются значения из нескольких списков, удобнее zip:
Pythonfor i, value in zip(indices, values):
a[i] = value
Например:
Pythonindices = [3, 7, 10]
values = [15, 22, 41]
for i, value in zip(indices, values):
a[i] = value
Если повторяющийся фрагмент сложнее, его лучше вынести в функцию:
Pythondef process(i):
result[i] = data[i] * 2 + offset[i]
for i in range(n):
process(i)
А вот если в каждой строке различается не только число в скобках, а сама логика вычисления, то «магически» сократить код нельзя. Сначала нужно привести различающиеся данные к списку, словарю или таблице, а общую часть оставить в цикле.
Не стоит заменять это на eval, генерацию строк с кодом или длинные однострочники: код станет короче визуально, но хуже для чтения и отладки.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

