2011-07-26 55 views
2

好的,所以我列出了296個數據點和四個空格。我無法編輯這個數據點列表。我有另外300個數據點的列表。我想把這些列表放在一起,當空格出現時用python跳過數據點。以下是這些列表的樣子:Python中的列表問題

a = [[6], [7], [], [7]] 
b = [[100], [200], [300], [400]] 

需要什麼樣的異常處理?我目前的代碼使用

for items in mathList: 
    try: 
     sumlist = [x * y for x,y in zip(grearp, rex)] 
    except: 
     print 'No data for',items 

回答

5

是兩個列表的長度居然300,然後,用0或丟失的數據點空字符串?如果是的話,這應該接近:

newList = [x[0] * y[0] if x else None for x, y in zip(l1, l2)] 

- 編輯 -

,我意識到我沒有審查的樣本數據比較,以及我可能已經。由於內部列表是空的,它將自行失敗,所以只需要if x。另外,爲x,y上的內部列表添加索引。

+0

這因爲他有列表列表,而不是整數列表,因此不起作用。 – miles82

+0

沒關係,我只是刪除了微型主義者,這工作。謝謝你的幫助! –

+0

@ miles82 - >你是對的。我稍微修改了代碼。但事實上,有時候它是關於演示一種方法,而不是提供複製/粘貼解決方案。這個問題歸結爲「我如何有條件地在列表解析中運行」,這兩個版本的代碼都證明了這一點。 –

0

想想,你還可以用像這樣(下面的代碼將準備名單是相同的大小,然後計算「*」如果存在兩個值 - 否則包括唯一的價值存在):

from itertools import izip_longest 

a = [[6], [7], [], [7]] 
b = [[100], [200], [300], [400]] 

newList = [[x[0] * y[0]] if x and y else (x or y) for x,y in izip_longest(a,b, fillvalue=[])]