2013-03-14 29 views
-1

我必須比較具有相同長度的兩個元素列表。 (例如[0,562,256,0,0,856][265,0,265,0,874,958],這兩個列表都有一個數量爲零和數量在249以上的數字。我想比較這些列表。如果在索引處兩個列表都有一個不同於0的數字,則該數字應該保存在列表中該結果應該是兩個清單隻數相同長度的上述249(在本例[256,856][265,958])感謝您的幫助將兩個列表與零和較大的數字進行比較

+1

和你有什麼試過自己到目前爲止? – 2013-03-14 11:50:54

+0

顯示您嘗試的代碼並描述其無法按預期工作的方式很有幫助。另外,你提出這個問題的方式聽起來像是你要求做家庭作業的答案。幫助功課沒問題,但答案不是。 – dsh 2013-03-14 11:53:29

回答

0

也許我們會找到一個更好的辦法,但

list1 = [0,562,256,0,0,856] 
list2 = [265,0,265,0,874,958] 
rest1 = [] 
rest2 = [] 
result1 = [] 
result2 = [] 
for i in range(len(list1)): 
if list1[i] and list2[i]: 
    rest1.append(list1[i]) 
     rest2.append(list2[i]) 
for i in range(len(rest1)): 
if rest1[i] >249 and rest2[i]>249: 
     result1.append(rest1[i]) 
    result2.append(rest2[i]) 
print(result1,result1) 
+0

如果你刪除第一個循環它仍然有效,但它是一個很好的解決方案,我認爲! – user2169610 2013-03-14 12:46:45

+0

謝謝你的感謝。我做了第一個循環,因爲你說過「如果在索引處兩個列表都有一個不同於0的數字,那麼這個數字應該保存在一個列表中。」 – 2013-03-14 12:49:02

3

使用zip()配成對每個列表的元素:!

listA = [0,562,256,0,0,856] 
listB = [265,0,265,0,874,958] 

combined = zip(listA, listB) 
resultA = [a for a, b in combined if a and b] 
resultB = [b for a, b in combined if a and b] 

給出:

>>> resultA 
[256, 856] 
>>> resultB 
[265, 958] 

你也可以先用filter()刪除所有對其中一個或另一個元素是0:

combined = filter(lambda (a, b): (a and b), zip(listA, listB)) 
resultA = [a for a, b in combined] 
resultB = [b for a, b in combined] 
相關問題