Вычислить наибольшее произведение 4 последовательных чисел в списке

#python #list

#python #Список

Вопрос:

Ниже я беру строку чисел, преобразую в список, затем я запускаю понимание списка, беря произведение того, что должно быть наибольшим произведением 4 последовательных чисел. Но мой код займет всего 9 ^ 4, и я не совсем уверен, как это исправить

 hundred_digit_str= (
                    "731671765313306249192251"
                    "196744265747423553491949349"
                    "6983520312774506326239578318"
                    "016984801869478851843"
                   )
    hundred_digit_str = list(hundred_digit_str)
    result = max(int(a) * int(b) * int(c) *int(d) for a, b, c, d in zip(hundred_digit_str, hundred_digit_str, hundred_digit_str, hundred_digit_str[:]))
  

Комментарии:

1. Вам нужно сжать смещенные версии, например, zip(h, h[1:], h[2:], h[3:]) (где h — это длинное имя переменной, которое я не могу ввести четыре раза) — очевидно, это относится к вашему существующему выражению, где вы уже используете zip.

2. Кстати, нет необходимости сначала преобразовывать его в список.

3. Также, кстати, это не понимание списка. Вместо этого вы (разумно) используете выражение генератора.

4. Это сработало, спасибо! Я погуглю разницу между ними: D