Можно ли поместить time.sleep(n) в понимание списка?
Можно ли поставить time.sleep(n)
в понимании списка, чтобы напечатать каждый элемент в списке с задержкой между каждым отпечатком?
import random, time
outside_lights = ['LED_fgate',
'LED_rgate',
'LED_mandoor',
'LED_garage',
'LED_garWin',
'LED_rgb',
'LED_deckOld',
'LED_deckNew',
'LED_cleartube',
'LED_cleartube2'
]
random.shuffle(outside_lights, random.random)
print [i for i in outside_lights]
5 ответов
Если условие в списке понимания может быть одним из вариантов для случая.
import random, time
outside_lights = ['LED_fgate',
'LED_rgate',
'LED_mandoor',
'LED_garage',
'LED_garWin',
'LED_rgb',
'LED_deckOld',
'LED_deckNew',
'LED_cleartube',
'LED_cleartube2'
]
random.shuffle(outside_lights, random.random)
print [i for i in outside_lights if time.sleep(1) is None]
Нет, и код, который у вас есть, не получит то, что (я подозреваю) вы хотите.
print [some comprehension]
будет просто производить весь список. Я думаю, что вы хотите каждый элемент. Чтобы сделать это, вы должны перебрать список. Что-то вроде:
for val in list:
print val
Тогда вы могли бы:
for val in [your list comprehension]:
print val
time.sleep(n)
для желаемого эффекта.
Как правило, вы не можете ставить утверждения (такие вещи, как print
, import
и т. д.) в пределах понимания. Это случаи, когда все, что вы делаете с пониманием, должно быть выполнено в виде цикла. Многие люди воспринимают понимание как сокращение для циклов, но это не правильно. Понимания являются лишь сокращением для создания объекта (что также может быть выполнено с помощью цикла)
В python2 вы не можете этого сделать, потому что print не является функцией, но вы можете сделать это в python3, если не возражаете против создания фиктивного списка в процессе. В python2 вы можете определить функцию для печати и затем сделать:
def p(x)
print x
[(p(i), time.sleep(.2) for i in outside_lights]
При этом печать происходит каждые 0,2 секунды. Список [(Нет, Нет), (Нет, Нет),...] создается и удаляется по завершении списка.
Примеры цикла for, вероятно, являются гораздо лучшим выбором. (разница между "может" и "должен")
from time import sleep
lista_num = [list(range(1,4)),list(range(4,7)),list(range(7,10))]
[[print(numero) for numero in matriz if sleep(1) is None] for matriz in lista_num]