#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