使用对其他列表中的元素的操作创建列表列表

2024-09-27 09:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

angles_rad = [[0.873,0.874,0.875...],[0.831,0.832, ...],...]

我想创建一个列表的新列表,从列表前面的角度减去每个内部列表中的所有角度:

ang_velocity = [[(0.874-0.873)/2,(0.875-0.874)/2,...],[(0.832-0.831)/2, ...],...]

我该怎么做?你知道吗

内部列表的长度都不同。我的尝试如下:

angular_velocity = []
for i in range(374):
    for j in range all:
        alist = []
        for angle1, angle2 in zip(orientations[i][j],orientations[i][j+1]):
            alist.append((angle2 - angle1)/2)
    angular_velocity.append(alist) 

任何帮助都将不胜感激。你知道吗


Tags: in列表forrange单子角度angularangles
2条回答

你就快到了。您想用一个从索引1开始的片段来压缩列表。所以:

In [1]: angles_rad = [[0.873,0.874,0.875],[0.831,0.832]]
   ...: [[f"({y} - {x})/2" for x,y in zip(sub, sub[1:])] for sub in angles_rad]
   ...:
   ...:
Out[1]: [['(0.874 - 0.873)/2', '(0.875 - 0.874)/2'], ['(0.832 - 0.831)/2']]

为了清晰起见,我创建了一个字符串,但只是用实际表达式替换了我的字符串插值。你知道吗

一般来说,不要在range(len(...)))上迭代,除非实际需要索引。你不需要索引,你需要的是,所以直接迭代就可以了。使用for循环:

In [2]: final = []

In [3]: for sub in angles_rad:
   ...:     intermediate = []
   ...:     for x, y in zip(sub, sub[1:]):
   ...:         intermediate.append((y - x)/2)
   ...:     final.append(intermediate)
   ...:

In [4]: final
Out[4]: [[0.0005000000000000004, 0.0005000000000000004], [0.0005000000000000004]]

可以在嵌套列表中使用索引:

angles_rad = [[0.873,0.874,0.875],[0.831,0.832]]
new_angles = [[(b[i+1]-b[i])/float(2) for i in range(len(b)-1)] for b in angles_rad]

相关问题 更多 >

    热门问题