Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环列表理解_Python_Loops_List Comprehension - Fatal编程技术网

Python 循环列表理解

Python 循环列表理解,python,loops,list-comprehension,Python,Loops,List Comprehension,我怎么会在这个循环中没有相同的结果 for i in range(0,len(irradiance_list_bytes),28): dardy= struct.unpack("qHHHHfff",irradiance_list_bytes[i:i+28]) 当我把它转换成这样的列表时 dardy=[struct.unpack("qHHHHfff",irradiance_list_bytes[i:i+28]) for i in range(0,len(irradiance

我怎么会在这个循环中没有相同的结果

   for i in range(0,len(irradiance_list_bytes),28):
        dardy= struct.unpack("qHHHHfff",irradiance_list_bytes[i:i+28])
当我把它转换成这样的列表时

dardy=[struct.unpack("qHHHHfff",irradiance_list_bytes[i:i+28]) for i in range(0,len(irradiance_list_bytes),28)]
循环的结果是:

    dardy
Out[55]: 
(631810591,
 32,
 12,
 1,
 100,
 146.53225708007812,
 -4.72298002243042,
 -7.121456623077393)
理解列表的结果是:

dardy
Out[57]: 
[(629816865,
  32,
  12,
  1,
  100,
  143.21139526367188,
  -3.786829710006714,
  -6.368762016296387),
 (630014820,
  32,
  12,
  1,
  100,
  143.46746826171875,
  -3.9606733322143555,
  -6.6814117431640625),
 (630213227,
  32,
  12,
  1,
  100,
  143.42613220214844,
  -3.992025136947632,
  -6.901387691497803),
 ......]

仅取最后一个值:

dardy=[struct.unpack("qHHHHfff",irradiance_list_bytes[i:i+28]) for i in range(0,len(irradiance_list_bytes),28)][-1]

仅取最后一个值:

dardy=[struct.unpack("qHHHHfff",irradiance_list_bytes[i:i+28]) for i in range(0,len(irradiance_list_bytes),28)][-1]

您不需要构建列表或使用for循环来获取项目的最后一部分

当步幅值为28时,使用mod运算符计算最后一个切片的开始索引。如果列表长度是28的系数,则从长度中减去28,否则从长度中减去长度
mod
28:

l = len(irradiance_list_bytes)
dardy= struct.unpack("qHHHHfff", irradiance_list_bytes[l - (l%28 or 28):])

您不需要构建列表或使用for循环来获取项目的最后一部分

当步幅值为28时,使用mod运算符计算最后一个切片的开始索引。如果列表长度是28的系数,则从长度中减去28,否则从长度中减去长度
mod
28:

l = len(irradiance_list_bytes)
dardy= struct.unpack("qHHHHfff", irradiance_list_bytes[l - (l%28 or 28):])


因为for循环不正确,只存储最后一个iteratee值。初始化
dardy=[]
,然后在循环中执行
dardy.append(str…)
,你想让理解像循环一样工作还是让循环像理解一样工作?@Coldspeed我想让列表理解像loop@MosesKoledoye,不,实际上这个循环运行得很好!因为for循环不正确,只存储最后一个iteratee值。初始化
dardy=[]
,然后在循环中执行
dardy.append(str…)
,你想让理解像循环一样工作还是让循环像理解一样工作?@Coldspeed我想让列表理解像loop@MosesKoledoye,不,实际上这个循环运行得很好!比我快10秒。当你只需要一个相对较小的部分时,建立一个列表是相当浪费的。@MosesKoledoye,我同意。谢谢你,先生!这很有帮助。比我快10秒。当你只需要一个相对较小的部分时就建立一个列表是相当浪费的。@MosesKoledoye,我同意。谢谢你,先生!这很有帮助。谢谢你,先生!这很有帮助。谢谢你,先生!这很有帮助。