2014-01-24 2 views
-1

Я пытаюсь сравнить значения трех списков в python и создать новый список на основе этих сравнений. Чтобы сделать его более запутанным, третий список считается (+1), когда оператор = true.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 

Так песни4 должен выглядеть следующим образом: песни4 [1,2,0,1,2]

Любая помощь будет принята с благодарностью!

Благодаря

+1

Вы сравнивая их поэлементно? Если да, то как вы получаете результат '2'? –

+0

Результат 2 будет получен из списка3, не находящегося внутри диапазона list1, и list2 (list1> = list3 и list2 <= list3). Каждый раз, когда это условие неверно, в список должен быть добавлен счетчик +1. Когда list3 соответствует перечисленным выше условиям, список сбрасывается на 0. – icehac

+0

Спасибо за помощь, ребята! Решения работали :) – icehac

ответ

3

Вы можете использовать generator function и zip:

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] 
Смежные вопросы