簡體   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