2014-01-24 90 views
-1

我想比較python中三個列表的值,並基於這些比較創建一個新列表。爲了使它更加混亂,當一個語句= true時,第三個列表計數(+1)。Python:比較三個列表的值來創建新列表

例如:

list1 = [5,10,15,20,25] 
list2 = [3,6,9,12,15] 
list3 = [0,1,11,21,28] 
list4 = [] 

if list1 >= list3 and list2 <= list3: 
    list4 = 0 
else: 
    list4 = list4 + 1 

所以list4應該是這樣的: list4 [1,2,0,1,2]

任何幫助將不勝感激!

感謝

+1

您比較這些元素是否明智?如果是這樣,你怎麼得到'2'的結果? –

+0

2的結果將來自list3不在list1和list2範圍內(list1> = list3和list2 <= list3)。每當這種情況不成立時,應該在列表中添加+1計數。當list3滿足上面列出的條件時,列表重置爲0. – icehac

+0

感謝您的幫助!解決方案工作:) – icehac

回答

3

您可以使用generator functionzip

def solve(list1, list2, list3): 
    last = 0 
    for a, b, c in zip(list1, list2, list3): 
     if a >= c and b <= c: 
      yield 0 
      last = 0 
     else: 
      last += 1  
      yield last 
...    
>>> list(solve(list1, list2, list3)) 
[1, 2, 0, 1, 2] 
0
list1 = [5,10,15,20,25] 
list2 = [3,6,9,12,15] 
list3 = [0,1,11,21,28] 
answer = [] 

app = 0 
for a,b,c in zip(list1, list2, list3): 
    if a>=c>=b: 
     app = 0 
    else: 
     app += 1 
    answer.append(app) 

證明:

>>> list1 = [5,10,15,20,25] 
>>> list2 = [3,6,9,12,15] 
>>> list3 = [0,1,11,21,28] 
>>> answer = [] 
>>> 
>>> app = 0 
>>> for a,b,c in zip(list1, list2, list3): 
...  if a>=c>=b: 
...   app = 0 
...  else: 
...   app += 1 
...  answer.append(app) 
... 
>>> answer 
[1, 2, 0, 1, 2]