Список понимания, чтобы избежать создания нескольких циклов - PullRequest
0 голосов
/ 22 ноября 2018

Можно ли избежать создания нескольких циклов для заполнения "c", как указано в приведенном ниже коде, и вместо этого сократить длину кода?(Может быть, через списки или другие средства)

n,m = input().split()
a = [input().split() for i in range(0,int(n))]
b = [input().split() for i in range(0,int(m))]
c = []
for i in b:
    if i in a:
        c.append(list((y+1) for y, e in enumerate(a) if e == i))
else:c.append([-1])
for i in c:
    print(*i)

пример ввода -> ("5 2" и затем разделенные строки) 5 2 a a b a b a b a 100 * *

1 Ответ

0 голосов
/ 22 ноября 2018

Более короткий код, но я не уверен, что его легче понять.Во всяком случае, здесь это идет:

n,m = input().split()
A = [input().strip() for _ in range(int(n))]
B = [input().strip() for _ in range(int(m))]

C = [ [(idx + 1) for idx, s_B in enumerate(A) if s_B == s] if s in A else [-1] for s in B ]

for lst in C:
    print(*lst)
...