2017-07-25 111 views
0

我对python仍然很陌生,所以任何帮助都将不胜感激。
我有两个元组的列表,包括int,float和int,float float,这两个列表中的整数都是相同的。
我有,因为这两个清单合并成使用
ž列表的列表=列表1
L =列表2在Python中操作列表的列表

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) 

*我想保持结果的列表,以便我能记得的结果是对应于任何整数。

+0

我试过在if语句上面运行一个for物件,但是我明白了'int'object is not subcriptable error – Dylan

+0

if you'force = [(((w [1])** 2 +(w [2])** 2)** 0.5)for w in Wind]' – Will

+0

我需要能够调用与整数相对应的结果值,这就是为什么我想保留在列表中 – Dylan

回答

0

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

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

在代码中,你有方括号包围的参数force.append,即force.append [I]代替force.append(ⅰ)。

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

0

您的意思是语句需要运行,直到它到达列表的末尾或者语句需要运行,直到子列表中的第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.