一个在python句子里面的for循环

新手学python,我遇到一个python在句子里面,我不能理解这个for循环是什么意思。
如果改成常见的那种for循环应该怎么写。
我看不懂的代码是这一句

 Q[s, a] = np.sum([T[s, a, sp] * (R[s, a, sp] + discount_rate * np.max(Q_prev[sp]))    for sp in range(3)])

这是完整的代码,运行的环境是jupyter,python版本是3.6.5

 import numpy as np
nan = np.nan
T = np.array([[[0.7,0.3,0.0],[1.0,0.0,0.0],[0.8,0.2,0.0]],
              [[0.0,1.0,0.0],[nan,nan,nan],[0.0,0.0,1.0]],
              [[nan,nan,nan],[0.8,0.1,0.1],[nan,nan,nan]]
             ])
R = np.array([[[10.,0.0,0.0],[0.0,0.0,0.0],[0.0,0.0,0.0]],
              [[10.,0.0,0.0],[nan,nan,nan],[0.0,0.0,-50.0]],
              [[nan,nan,nan],[40.0,0.0,0.0],[nan,nan,nan]]
             ])
possible_actions = [[0,1,2],[0,2],[1]]

Q = np.full((3, 3), -np.inf)  # -inf 对应着不可能的动作 
for state, actions in enumerate(possible_actions):    
    Q[state, actions] = 0.0  # 对所有可能的动作初始化为0.0
learning_rate = 0.01 
discount_rate = 0.95 
n_iterations = 100
for iteration in range(n_iterations):   
    Q_prev = Q.copy()    
    for s in range(3):        
        for a in possible_actions[s]:            
            Q[s, a] = np.sum([T[s, a, sp] * (R[s, a, sp] + discount_rate * np.max(Q_prev[sp]))  
            for sp in range(3)])

1个回答

这句话改成常见写法是:
for sp in range(3):
Q[s, a] += T[s, a, sp] * (R[s, a, sp] + discount_rate * np.max(Q_prev[sp]))

举个例子:
t = [i for i in range(3)]
相当于:
t = []
for i in range(3):
t.append(i)
这是一种非常方便的写法。

cjk_cjk
cjk_cjk 回复qq_34644971: 你好,这是因为在我们加的for循环前面需要初始化,Q[s,a]=0.0
12 个月之前 回复
qq_34644971
qq_34644971 你好,我把有疑问的那一句换成了你说的那种写法,然后输出Q,结果和原本的代码输出Q,结果是不一样的。
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python里面的for循环
python里面的in后面的内容指的是可以从in后面一次取出元素 for example 1 #遍历数字序列 the_count = [1,2,3,4,5] for i in the_count : print(f"这是一个数字{i}")` 输出结果: 这是一个数字1 这是一个数字2 这是一个数字3 这是一个数字4 这是一个数字5 for example 2 fruits=[‘apples’,‘...
for循环里面的递归
for循环里面的递归调用探讨 递归本来要来简化循环问题的,不过程序中往往却有for加递归一起使用的情况。 我们在for里面堪套for,或者for里面的for再堪套for,都能很直观地理解。 当for里面加入了递归,理解的层面就由三维跳到了四维,很难直接观看,要靠无穷的想像力。 先来分析一段小代码 这个代码里,For里面堪套了递归调用,你觉得应该怎样预测它执行的结果
dos里面的for循环
在linux里面,一个for file in *.cpp就可以把$file当做字符串处理,但在dos下面怎么就是不行呢?比如:for %f in (*.cpp) do echo %f:~0,4这是输不出正确结果的,是不是这里%f不是个字符串啊?
翻转句子里面的单词
在C++中,char *point和char[n]的区别在于,char *point的里面的某个位的值是不可改变的。而char[n]的里面某一位的值是可以改变的。代码如下: #include using namespace std; int main() { char ch1[20] = “123456789”; char *charp = “abcdefgh”; ch1[1] = ‘a’;//这...
for循环里面的大小的属性
String[] s        --->  s.length;String   s        --->  s.length();ArrayList al      --->  s.size();
ajax里面的for循环问题
[code=javascript]rn$.getScript(url,function()rn var result = eval('('+data+')');rn for(var i=0; i<=data.length; i++)rn ....rn rn);rn[/code] rn提示说data[i]里面的属性没定义,是不是for循环里面的i都加完了?然后data[data.length]不存在?如果是的话为什么?还是其他问题?我好像里面加个alert能弹出正确的结果?for换成each也可以
for循环里面的递归调用探讨
递归本来要来简化循环问题的,不过程序中往往却有for加递归一起使用的情况。我们在for里面堪套for,或者for里面的for再堪套for,都能很直观地理解。当for里面加入了递归,理解的层面就由三维跳到了四维,很难直接观看,要靠无穷的想像力。
for循环里面的判断语句
# jsn## 我想要判断一个坐标在不在坐标数组中n于是我写了下面的代码n```n function outofbody(a, array) n for (i = 0; i < array.length; i++) n if (a.x == array[i].x && a.y == array[i].y) n return false;n n return true;n n n```n但是感觉这样又不对了 这个好像是会不断的输出true和false的是吧n那如何才能只输出一个呢 要么不在 输出true 要么在 输出falsen我自己想出的方法是n再定义一个数n每次不一样就+1n一样了就不动n然后比较这个数和array.length的大小 n但是感觉这样麻烦 应该有更好的办法 n哪位能帮忙讲解下n
python在shell里如何写for循环
一、如图,先写一行for循环,记得写“:”,然后在下行缩进写逻辑,然后点两下回车,程序就会运行了 方法二,写脚本 注意权限用chmod命令、python文件位置用which python查询,运行./fortest或python fortest 方法三 print([bb for bb in list1])  ...
为什么if里面的句子判断不出啊
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>rn<%@ page import="java.sql.*"%>rn rn<%rnString path = request.getContextPath();rnString basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";rn%>rnrnrnrnrn rn rn rn My JSP 'index.jsp' starting pagern rn rn rn rn rn rn rn rn rn rn rn rn rn请输入用户名:rnrnrnrn rn rn请输入密码: rnrnrnrn rn rnrnrnrnrnrn rn <%rn if(request.getParameter("username")!=null)rn Connection con;rn Statement sql;rn ResultSet rs;rn String a=request.getParameter("username");rn String a1;rn tryrn Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); rn rn catch(ClassNotFoundException e)rn out.print("类找不到");rn rn tryrn con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=checkdb","sa","");rn rn sql=con.createStatement();rn rs=sql.executeQuery("SELECT * FROM login");rn while(rs.next())rn a1=rs.getString("username");rn out.print(a1);rn rn rn rn catch(SQLException el)rn out.print(el.toString());rn rn if(a.equals("a1"))rn out.print("成功");rn rn rn %> rn rnrnrnrnrn主要是不明白为什么if(a.equals("a1"))rn out.print("成功");rn rn里面的out.print("成功");执行不到啊?我事先已经在数据库里设定username为admin,if里的条件应该为真才对,可是为什么不能执行里面的语句啊?是不是从数据库里返回的字符串加了空格所以不相等啊?如果是那该怎么判断相等啊?rn
大学英语四级里面的优美句子和词汇
四级考试必备的词汇及作文必备的句子积累,希望能帮到你
求解读python 一个句子
rnrn```rn python self.label_suffix = label_suffix if label_suffix is not None else _(':')的_(':')rn```rnrn是什么意思?rn额,怎么打不过出来_(':'),这个(':')前面有一个下划线的。。。
怎么写python的一个句子
7,14,17,21,27,28,35,37,42,47,63,67......rn这些数字都是7的倍数或者数字本身包含7,怎么写一个句子在range(1,100)中将他们都遍历出来呢?rn也就是说17,27,37,47这些数字怎么用python表达他们含有7呢?
为什么for循环里的定义会影响后面的for循环啊
在第一个for循环里定义的k为double型,如果我在下面每一个for循环里都定义一边会报错,如果我只留第一个double定义却能得到正确答案,这是为什么啊,不是说for循环里的定义的变量是局部变量么?rn![![图片说明](https://img-ask.csdn.net/upload/201811/06/1541433858_984666.png)图片说明](https://img-ask.csdn.net/upload/201811/06/1541433853_403677.png)
如何在for循环外 调用for循环里面的数据
[code=Python]#!/usr/bin/env pythonrnrnimport datetimernrnaDict = rnwith open(r'D:\python_dev\1.txt') as fd:rn for line in fd:rn a = line.split()rn aday, atime, asrc, adst, aflag = a[0], a[1], a[2], a[3], a[5]rn aKey = asrc + ' > ' + adstrn if aKey in aDict:rn aDict[aKey].append([aday+" "+atime, aflag])rn else:rn aDict[aKey] = [[aday+" "+atime, aflag]]rndelimiter = '[P.]'rnrnfor key in aDict:rn arry = []rn tmp = []rn for x in aDict[key]:rn #print key,'x',xrn s = x[1]rn #print 's',srn if s != delimiter:rn tmp.append(x[:1])rn else:rn arry.append(tmp)rn tmp = []rn arry.append(tmp)rn for x in arry:rn if len(x) < 2 :rn continuern else:rn #print keyrn for t1 in x[0]:rn timedict = rn for t2 in x[-1]:rn #print t1,t2rn date1 = datetime.datetime.strptime(t1,"%Y-%m-%d %H:%M:%S")rn date2 = datetime.datetime.strptime(t2,"%Y-%m-%d %H:%M:%S")rn datesent = str(date2 -date1)rn #print datesentrn #print 'key',keyrn if key in timedict:rn timedict[key].append(datesent)rn else:rn timedict[key] = datesentrn print timedictrnrnrnrnrnrn[/code]rnrnrnrnrnrnrnrn不过最后5行 想把key相同元素放到一起 没效果rnrn结果是这样,第三、第四行key相同rn'192.168.90.15.1750 > 58.58.58.58.8000:': '0:10:30'rn'192.168.90.20.1386 > 58.58.58.58.81:': '0:09:01'rn'192.168.90.119.1891 > 220.170.79.229.80:': '0:00:00'rn'192.168.90.119.1891 > 220.170.79.229.80:': '0:00:03'rn'192.168.90.118.3594 > 58.58.58.58.1604:': '0:08:00'rnrnrn原始数据如下:rn2012-06-11 08:28:27 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:28:27 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:28:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:29:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:29:06 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:29:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:29:19 192.168.90.118.3594 58.58.58.58.1604: Flags [.] rn2012-06-11 08:29:22 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:29:22 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:29:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:30:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:30:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:30:17 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:30:17 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:30:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:30:51 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:31:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:31:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:31:12 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:31:12 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:31:19 192.168.90.118.3594 58.58.58.58.1604: Flags [.] rn2012-06-11 08:31:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:32:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:32:06 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:32:07 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:32:07 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:32:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:32:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:33:02 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:33:02 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:33:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:33:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:33:19 192.168.90.118.3594 58.58.58.58.1604: Flags [.] rn2012-06-11 08:33:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:33:51 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:33:57 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:33:57 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:34:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:34:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:34:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:34:52 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:34:52 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:35:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:35:06 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:35:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:35:19 192.168.90.118.3594 58.58.58.58.1604: Flags [.] rn2012-06-11 08:35:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:35:47 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:35:47 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:36:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:36:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:36:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:36:42 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:36:42 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:36:50 192.168.90.119.1891 220.170.79.229.80: Flags [S] rn2012-06-11 08:36:50 192.168.90.119.1891 220.170.79.229.80: Flags [.] rn2012-06-11 08:36:50 192.168.90.119.1891 220.170.79.229.80: Flags [P.] rn2012-06-11 08:36:50 192.168.90.119.1891 220.170.79.229.80: Flags [.] rn2012-06-11 08:36:50 192.168.90.119.1891 220.170.79.229.80: Flags [.] rn2012-06-11 08:36:53 192.168.90.119.1891 220.170.79.229.80: Flags [F.] rn2012-06-11 08:36:51 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:37:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:37:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:37:19 192.168.90.118.3594 58.58.58.58.1604: Flags [.] rn2012-06-11 08:37:37 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:37:38 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:37:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:38:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:38:07 192.168.90.20.1386 58.58.58.58.81: Flags [.] rn2012-06-11 08:38:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:38:32 192.168.90.21.1109 125.107.140.175.5938: Flags [P.] rn2012-06-11 08:38:33 192.168.90.21.1109 125.107.140.175.5938: Flags [.] rn2012-06-11 08:38:41 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:39:04 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rn2012-06-11 08:39:11 192.168.90.15.1750 58.58.58.58.8000: Flags [.] rnrn
php单独读取for循环里面的数据
也就是说1,2,3,4,5,6,7在for循环里面读出来,我要怎么才可以单独只读3
java for循环里面的数组,并打印出来
String[] a = {1,2,1,2,3,4}; StringBuffer sb = new StringBuffer(); String aESIPID ;for (int i = 0; i if (a!=null) { aESIPID = a[i]; if (sb.length()>0){ sb.append(",").append(aESIPID); }el
java里面的for循环执行的顺序
今天偶然在网上看到一道面试题: public class test { public static void main(String[] args){ for(foo("A");foo("B")&&i<4;foo("C")){ i++; foo("D"); } } public static foo(char a){ System.out.print(a); return
为什么for循环里面的代码不执行?
在做asp网页时,有这么一段代码!rn<%rndim PicIndex=0rn%>rn rn为什么alert里弹出来的总是0呢?rn好像<% PicIndex=(PicIndex+1) %>这句没有执行!
for循环获取里面的key和value
for (Map.Entry&amp;amp;lt;Integer,BigDecimal&amp;amp;gt; entry:map.entrySet()) {} entry.getKey()获取map里面的key entry.getValue()获取map里面的value
python里面的函数参数
pyhton的定义函数中,可以使用4中参数:必选参数,默认参数,可变参数,关键字参数。同时,参数的定义顺序也必须按照此顺序。我给大家介绍了不同参数调用形式和一些规则。
Python里面的进制转换
Python里的进制转换 以前用C语言写过一些单片机的串口程序,
python里面的函数
python里面的函数 函数定义 def my_abs(x): if x >= 0: return x else: return -x 如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。 return None可以简写为return。 在Python交互环境中定义函数时,注意Python会出现...的提示
Python里面的字典
Dict():通过已有的数据快速创建字典 keys = list('abcd') values = [1,2,3,4] dictionary = dict(zip(keys,values)) print dictionary
Python里面的正则
Python里面的正则,服从普通正则特性。需要注意的是Python自己的方法。 34:python的正则 import rere.findall(“s”,”dfssssssssssssssddf”) Match对象的mctch()方法 Match对象还有 group() : 输出匹配字符 start() :返回匹配开始的位置 end() :返回匹配结束的位置 span() 返回元组
python里面的单例模式
单例模式
python里面的面向对象
一、什么是面向对象(oop:object oriented programming) 面向过程:侧重于怎么做 1.把完成某一个需求的 所有步骤 从头到尾 逐步实现 2.根据开发要求,将某些功能独立的代码封装成一个又一个函数 3.最后完成的代码,就是顺序的调用不同的函数 特点: 1.注重步骤与过程,不注重职责分工 2.如果需求复杂,代码会变得很复杂 3.开发复杂项目,没有固定的套路,开发难度很...
请解释下面的句子
请解释下面的句子rn#define SIG_DFL (void (__cdecl *)(int))0 rn#define SIG_IGN (void (__cdecl *)(int))1 rn#define SIG_SGE (void (__cdecl *)(int))3 rn#define SIG_ACK (void (__cdecl *)(int))4
python for循环输入一个矩阵
for循环输入矩阵
Python——for循环
语法 for 变量 in 集合: 循环体代码 else: 没有通过 break 退出循环,循环结束后,会执行的代码 备注:for 元素 in 序列,这个 元素 可以随便命名,都会遍历整个序列的 应用场景 •在 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典 •需求:要判断 某一个字典中 是否存在 指定的 值 ◦如果 存在,提示并且退出循环 ◦如果 不存在,...
python的for循环
1:while循环 2:for循环 3:range 4:range(),len(),enumerate()函数 5:列表解析 排除掉不能整除2的数的平方
python之for循环
结束for循环: pass:不做任何事情,只起到占位的作用 continue 结束本次循环 (本次而已) break 结束本层for循环
python for循环
我自己写的一个for循环。希望对你们有帮助
python——for循环
一、range( )函数:      在学习for循环之前,我们必须掌握range( )函数的用法:      一般有如下三种格式的用法:     1.  range(number)                     #### 表示生成一串连续的整数,范围是 0--number-1        2. range(startnum,stopnum)                #...
python 逆转句子
1.将一个句子逆转 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I #-*- coding:utf8 -*- string = raw_input('string:') #输入句子 list1 = string.split() #以空格分裂 list1 = reversed(list1) #逆转list a = ' '...
python正则表达式匹配句子。
如何在python里用正则表达式匹配一段话里的一些关键搭配并将关键搭配所在句子抽取出来。rn如:rnHello everyone,my name is Bob.This is my friend Alice.We both like movies. rn怎么在这样一段话里匹配关键搭配“We like”并且将We both like movies.这句话提取出来(存在一个列表或者元组里都行)。 rn
[python]反转英文句子
def reverse(li, start, wl): i, j = start, start + wl - 1 while i < j: li[i], li[j] = li[j], li[i] i += 1 j -= 1 def fan(s): li = list(s) llen = len(li) sta
【一个句子里,单词的个数统计】
思路:如果当前字符不是空格,且下一字符是空格,则单词个数累加一个 #include #include int main() {  int i,sum=0;  char a[99999];  gets(a);    for(i=0;i  {   if(a[i]!=' '&&a[i+1]==' ')   {    sum=sum+1;   }  }  pri
js中写一段for循环,for循环里如果有一个计时器。
for循环里执行到计时器,是把计时器的时间执行完再向下,还是同步执行。
python的class里面的类变量
python类里面的注意事项 在学习python写类的过这个中遇到些问题,感觉和以前语言写类的方式有些差别,可能是自己学艺不精才遇到这些问题。 先来一段代码: class Dog: n='这是一个类变量' #类变量 n_list=[] name='这是类的name!' def __init__(self,name,weapen,role,money=1...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池