压缩重复循环

Conpressing repeated loops

我为 HackerRank problem 编写了以下代码,其中包含语法非常相似的重复 FOR 循环:

x, y = map(int, input().split())

inp = []
for _ in range(x):
    inp.append(list(map(int, input().split()))) 
#I get the rest of the input as a nested list.

while len(inp) < 7:
    inp.append([1, 0])
#Adding dummy values in the list

list = []   
for a in inp[0][1:inp[0][0]+1]:
    for b in inp[1][1:inp[1][0]+1]:
        for c in inp[2][1:inp[2][0] + 1]:
            for d in inp[3][1:inp[3][0] + 1]:
                for e in inp[4][1:inp[4][0] + 1]:
                    for f in inp[5][1:inp[5][0] + 1]:
                        for g in inp[6][1:inp[6][0] + 1]:
                            list.append((a ** 2 + b ** 2 + c ** 2 + d ** 2 + e ** 2 + f ** 2 + g ** 2) % y) 
                            #Given function

print(max(list))

I wonder if there's any way to do this in one go.

PS: 我绝对是编程初学者。

使用itertools.product可以稍微简化循环:

import itertools as it

K, M = map(int, input().strip().split())

# reading the K lines and appending lists to 'L'
L = []

for i in range(K):
    lst = list(map(int, input().strip().split()))
    L.append(lst[1:])
   

# Looping through Cartesian product 

MAX = -1

for i in it.product(*L):
    MAX = max(sum(map(lambda x: x**2, i))% M, MAX)
    
print(MAX)