2017-07-25 152 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.