вложенные понимания не очень читабельны
простой
[something for something in container if something > 9]
круто, но вложенный часто сбивает с толку
Вы можете просто переместить циклы в функцию генератора - она будет по-прежнему читабельна и позволит выполнять ленивую итерацию
def no_idea_what_this_represents():
for a in range(-13, 1):
for b in range(0,4):
for c in range(6, 49):
for d in range(48, 94):
tmp = [0 for i in range(100)]
for i in range(100):
if raw_x[i] >= b and raw_y[i] >= d:
tmp [i] = -1
if raw_x[i] <= a and raw_y[i] <= c:
tmp [i] = 1
yield tmp
final = [signs for signs in no_idea_what_this_represents()]
РЕДАКТИРОВАТЬ: просто вымышленное приложение - так можно назвать сложный вложенный цикл (я назвал его no_idea_what_this_represents
по понятным причинам), но когда программист видит
possible_views = [matrix for matrix in camera_matrices()]
он сразу знает, что это значит, в то время как что-то вроде
possible_views = [device.matrix
for devices in itertools.chain(connected_devices(), buffered_devices()
for device in devices
if device.type=='camera']
заставляет программиста читать много строк, и неясно, что происходит