@Oleg_newbie
пытаюсь научиться новому, пока все сложно

Как умножить списки разной длины в python?

Надо создать список(из N элементов) и найти произведение элементов, индексы которых находятся в файле(100 штук).
С созданием списка и расшифровкой файла я справился. А вот при умножении упираюсь в ошибку "IndexError: list index out of range", ее победить не получилось.
То что написал прилагаю

N = int(input('Enter N: '))

import random

rnd_list = []
for i in range(0, N):
    rnd_list.append(random.randint(-N, N))
print(rnd_list)

with open("indexes.txt") as data: index_list = [int(line.strip()) for line in data]
print(index_list)

mult = 1
for i in index_list:
    mult *= rnd_list[index_list[i]]
print(mult)
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
mult *= rnd_list[i]
или так:
for indx, value in enumerate(rnd_list):
    if indx in index_list:
        mult *= value
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
for i in index_list:
    mult *= rnd_list[i]

Должно быть правильно. Если вываливается IndexError - значит, в index_list есть индексы, которые не вписываются в rnd_list - либо >N-1, либо <-N. Уточняй условие задачи, что делать, если встретились такие индексы.
Ну и можно для уточнения ситуации сделать так:
N = len(rnd_list)
for i in index_list:
    try:
        value = rnd_list[i]
    except IndexError:
        print(f'Не удалось взять элемент с индексом {i}, он не в диапазоне {-N}...{N-1}. Игнорирую индекс.')
    else:
        mult *= value
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы