繁体   English   中英

在python中处理列表列表

[英]Manipulating a list of lists in python

我对python还是很陌生,所以将不胜感激。
我有两个由int,float和int,float float组成的元组列表,其中两个列表中的整数相同。
从那以后,我已经将这两个列表合并为一个列表,使用
z =清单1
L =清单2

z = [[r[col] for r in z] for col in range(len(z[0]))]
L = [[r[col] for r in L] for col in range(len(L[0]))]  

final_t_matrix = []
for i in (z + L):
    if i not in final_t_matrix:
        final_t_matrix.append(i)
Wind = [[r[col] for r in final_t_matrix] for col in range(len(final_t_matrix[0]))]  

现在,我有了一个列表列表,如果我运行print语句,它将提供此列表(输出仅是部分输出)。

[1, -9.820569, -27.857089, 52.5], [2, -13.876759, -28.511313, 52.5], [3, -10.505768, -27.967606, 52.5], [4, -14.367771, -28.590508, 52.5], [5, -10.250126, -27.926373, 52.5]

我现在想通过选择第二个和第三个值并获取结果并将其输出到列表中来操纵这些数据。

我的代码目前是这样,但我似乎缺少了一些东西。 该语句需要运行直到到达无值,然后停止,因为该列表可能超过500个数据点

force = [] 
i = 0
if Wind[i][3] == 30.0:
    force.append[i] = (((Wind[i][1])**2 + (Wind[i][2])**2)**0.5)
else:
    i += 1

print(force)

*我想将结果保留在列表中,以便我可以调用与任何整数相对应的结果。

得到一个简单的答案,当调整输出时我想要什么。

force = [(w[0], (((w[1])**2 + (w[2])**2)**0.5), w[3]) for w in Wind]   

在您的代码中,您将方括号括入了force.append的参数,即用force.append [i]代替了force.append(i)。

我不确定纠正此语法错误是否足够,但这应该是朝正确方向迈出的一步。

您是说语句需要运行直到到达列表末尾,还是需要运行直到在子列表的第4个元素中看到None值为止?

如果是第一种情况,则只需将其放入循环中:

force = [] 
for i in range(len(Wind)):
  if Wind[i][3] == 30.0:
     force.append(((Wind[i][1])**2 + (Wind[i][2])**2)**0.5)
print(force)

否则,您需要将其放入循环并使用break语句:

force = [] 
for i in range(len(Wind)):
   if Wind[i][3] == None:
      break
   elif Wind[i][3] == 30.0:
      force.append(((Wind[i][1])**2 + (Wind[i][2])**2)**0.5)
print(force)

请注意,由于子列表中没有第四个元素等于30,因此在给定的示例风列表的情况下,这将输出一个空列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM