考虑以下命令:
elite_states = [s for i in range(len(states_batch))
if rewards_batch[i]>=reward_threshold for s in states_batch[i]]
我发现这相当于以下循环:
_l=[]
for i in range(len(states_batch)):
for s in states_batch[i]:
if rewards_batch[i]>=reward_threshold:
_l.append(s)
但是,我不知道第一个命令中s
之后的循环如何成为其等效的外部循环。我想了解命令的格式,以便了解它的工作原理
事实并非如此。列表理解的读取方式与普通嵌套循环相同。首先在
range(len(states_batch))
上循环,然后,在这个循环中,检查if rewards_batch[i]>=reward_threshold
,然后,在这个条件中,运行最后一个循环因此,“扩展”版本如下所示:
在代码中,这与理解非常相似:
唯一的区别是理解中的循环是按顺序编写的(一个在另一个之后),但在扩展版本中,它们会嵌套在另一个内部,理解中的最后一个循环嵌套得最深
相关问题 更多 >
编程相关推荐