是否可以在列表推导中放置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]
答案 0 :(得分:4)
不,你在那里的代码不会得到你想要的(我怀疑)。
print [some comprehension]
将只生成整个列表。我想你想要每个项目。为此,您必须遍历列表。类似的东西:
for val in list:
print val
然后你可以:
for val in [your list comprehension]:
print val
time.sleep(n)
达到预期的效果。
作为一般规则,您不能将statements(像print
,import
之类的东西)放在理解中。在这些情况下,无论你在理解中做什么都必须作为一个循环来完成。许多人认为理解是循环的简写,但这不正确。理解只是对象创建的简写(也可以通过循环来实现)
答案 1 :(得分:2)
如果列表理解中的条件可以是案例的一个选项。
{{1}}
答案 2 :(得分:1)
for i in outside_lights:
time.sleep(10)
print i
答案 3 :(得分:1)
你不能在python2中因为打印不是一个函数,但如果你不介意在这个过程中创建一个虚拟列表,你可以在python3中。在python2中,您可以定义一个print函数,然后执行:
def p(x)
print x
[(p(i), time.sleep(.2) for i in outside_lights]
这样,打印每0.2秒发生一次。列表完成后,将创建并放弃[(None,None),(None,None),...]列表。
for循环示例可能是更好的选择。 (' can'和#39;应该')
之间的差异