在python中操作列表列表

时间:2017-07-25 03:08:58

标签: python list

我仍然对python很陌生,所以任何帮助都会非常感激 我有两个元组列表,包括int,float和int,float float,两个列表中的整数都相同。
我已经将这两个列表合并到一个列表中使用
        z = List1
        L = List2

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)

*我想将结果保存在列表中,以便我可以回想起与任何整数对应的结果。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

在你的代码中,你有方括号将你的参数括在force.append中,即force.append [i]代替force.append(i)。

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

答案 2 :(得分:0)

你的意思是语句需要运行,直到它到达列表的末尾或者语句需要运行,直到在子列表的第4个元素中看到无值?

如果是第一种情况,那么你只需要把它放在一个循环中:

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)

请注意,这将输出一个空列表,给定您提供的样本Wind列表,因为子列表中没有等于30的第4个元素。