在python中,有没有一种快速的方法可以有条件地向for循环添加循环?

在python中,有没有一种快速的方法可以有条件地向for循环添加循环?,python,for-loop,Python,For Loop,如果满足条件,是否有一种简单的方法向for循环添加额外的循环 在epsilon贪婪的学习算法中,该算法应返回概率为1-epsilon的计算答案(在这种情况下,计算答案是一个N*N numpy数组,其中一些Actn1>Actn2)。然而,为了探索环境,有时算法会生成一个随机答案。这意味着对于固定数量的情节,循环将终止并返回随机答案,而不是概率ε的计算答案 for i in range(Episodes) ..... if np.random.uniform

如果满足条件,是否有一种简单的方法向for循环添加额外的循环

在epsilon贪婪的学习算法中,该算法应返回概率为1-epsilon的计算答案(在这种情况下,计算答案是一个N*N numpy数组,其中一些Actn1>Actn2)。然而,为了探索环境,有时算法会生成一个随机答案。这意味着对于固定数量的情节,循环将终止并返回随机答案,而不是概率ε的计算答案

    for i in range(Episodes)
        ..... 
        if np.random.uniform(0,1) >= ep:
            Ans = StActn1 >= StActn2
        else:
            Ans = np.array(np.random.choice((0, 1), size=(10, 10)))
    return(Ans)
如果是这样的话,有没有办法强迫它进行额外的循环?我想我正在寻找一种简单的for循环方法来获得类似这样的行为

  while i <= Episodes or c == 1:
        .....
        if np.random.uniform(0,1) >= ep:
            Ans = QH >= QS
            c=0  
        else:
            Ans = np.array(np.random.choice((0, 1), size=(PlrDm, DlrDm)))
            c=1 
  return(Ans)
当i=ep时:
Ans=QH>=QS
c=0
其他:
Ans=np.array(np.random.choice((0,1),size=(PlrDm,DlrDm)))
c=1
返回(Ans)

这可以在python中完成吗?

我假设您最多只希望额外的循环发生一次,因此可以添加一个标志:

    once_more = False
    for i in range(Episodes)
        ... 
        if np.random.uniform(0,1) >= ep:
            Ans = StActn1 >= StActn2
            once_more = False
        else:
            Ans = np.array(np.random.choice((0, 1), size=(10, 10)))
            once_more = True
    if once_more:
        ...
        Ans = StActn1 >= StActn2
    return Ans

我不确定这是否是进行此操作的最佳方式,但我应该在if语句中添加一个附加条件

for i in range(Episodes)
    ..... 
    if np.random.uniform(0,1) >= ep or i == Episodes:
        Ans = StActn1 >= StActn2
    else:
        Ans = np.array(np.random.choice((0, 1), size=(10, 10)))
return(Ans)

谢谢!仍然在学习并不意味着垃圾邮件,只是在寻找在python中实际实现epsilon贪婪的指针。谢谢!2个快速跟进问题。1) 有没有一种方法可以在不重新复制代码库的情况下实现这一点?我无法再次按原样调用该函数,因为Ans、StActn1、StActn2将从头开始重新计算,除非以一种麻烦的方式修改函数参数。2) 如果循环完成仍然<剧集,并且once_more=True,此方法不会导致程序提前终止吗?1)您可以将重复的代码提取到另一个函数2)不,不会。循环体中没有
break
return
,因此它不会提前停止。它应该是
i==剧集-1
,否则该条件将永远不会为真!