python вложенный цикл for внутри map, lambda

Есть код:

nums = [12, 63, 10, 27, 10, 4, 7]
delitel = [3, 7, 9]
ostatok = list(map(lambda pair: pair[0] % pair[1], [(n, o) for n in nums for o in delitel]))
splitted_list = [ostatok[i:i+3] for i in range(0, len(ostatok), 3)]
index = (list(map(lambda x: x, [(z) for z in range(len(splitted_list))])))

список nums содержит случайные числа

список delitel содержит набор случайных делителей

Код должен проверять, делится ли каждое число из списка nums на каждое число из списка delitel, например:

if 12 % 3 == 0: print(f"{число} делится на {делитель}")
if 12 % 7 == 0: print(f"{число} делится на {делитель}")
if 12 % 9 == 0: print(f"{число} делится на {делитель}")
if 63 % 3 == 0: print(f"{число} делится на {делитель}")
if 63 % 7 == 0: print(f"{число} делится на {делитель}")
if 63 % 9 == 0: print(f"{число} делится на {делитель}")
и т.д.

Проблема: не могу написать нормально в одну строку проверку индексов из списка index для списка splitted_list, т.е. если splitted_list[index] == 0, то он выведет, что число делится нацело на заданный делитель.

Пытался сделать как-то так, но

  • он берет только первый остаток, а дальше их не перебирает, а надо чтобы он проверил их все, и уже вывел что надо.
  • не понял какие ставить индексы у nums и delitel
    result = [*map(lambda x: ([f"число {nums[y]} делится на {delitel}" for y in range(len(nums))]) if x == 0 else "", [(n) for n in splitted_list[next(map(lambda x: x, [(z) for z in range(len(splitted_list))]))]])]

Задача: без использования библиотек в ОДНУ строчку дописать код, БЕЗ использования отдельных циклов for, while, отдельных if, и т.д.

вот как я начал делать все в одну строку, так и надо закончить. Т.е. можно использовать if и for, но все в одной строке


Ответы (2 шт):

Автор решения: Oopss
nums = [12, 63, 10, 27, 10, 4, 7]
delitel = [3, 7, 9]
s = []
x = [s.extend(i) for i in
     [list(map(lambda x: f'число {x} {"не делится" if bool(x % y) else "делится"} на {y} \n', nums)) for y in delitel]]
print(*s)

число 12 делится на 3 
 число 63 делится на 3 
 число 10 не делится на 3 
 число 27 делится на 3 
 число 10 не делится на 3 
 число 4 не делится на 3 
 число 7 не делится на 3 
 число 12 не делится на 7 
 число 63 делится на 7 
 ...
→ Ссылка
Автор решения: geo
nums = [12, 63, 10, 27, 10, 4, 7]
delitel = [3, 7, 9]

# в одну строку через генератор
print(*(f'{n} делится на {d}' for n in nums for d in delitel if n % d == 0), sep='\n')
→ Ссылка