2016-10-13 3 views
0

Я близок к выяснению этой проблемы, но, в частности, я висел на одной вещи. Я пытаюсь объединить/закрепить элементы в парах списка по паре, а затем проверить, какое значение больше. Я просто не могу понять, как соединить эти элементы без повторения значений.Сопряжение элементов без повторения

[35,10,5,3,1,26,15] 

Я не хочу:

[35,10], [10,5] 

Я НЕ хочу:

[35,10], [5,3] 

Вот мой код:

def queue_time(customers, n): 
    time_left = 0 
    max_val = max(customers[:n]) 
    total_time = int(max_val) 
    other_customers = list(customers) 
    other_customers.remove(max_val) 

for idx, el in enumerate(other_customers): 
    if max_val > 0: 
     nxt_till_times = other_customers[idx:idx+n-1] 
     max_other_tills = max(nxt_till_times) 
     max_val -= max_other_tills 
     print nxt_till_times 
    elif max_val == 0: 
     max_val = max(customers[idx:idx+n]) 
     total_time += max_val 
    elif max_val < 0: 
     time_left = [-1*(max_val)] 
     others_still = time_left + customers[idx+1:] 
     max_val = max(others_still[:n]) 
     total_time += max_val 

#print total_time 
return total_time 

queue_time([35,10,5,3,1,26,15], 3) 
+0

Исправьте отступ в коде. – Soviut

+0

Спасибо, что заметили это; извините забыл проверить мой отступ, когда я скопировал и вставил. Все из цикла for должно быть отступом. – eeskonivich

ответ

0
l = [35,10,5,3,1,26,15] 
g = (i for i in l) 
output = [(next(g), next(g)) for i in range(len(l)//2)] 

g - генератор. Это ничего не делает с последним элементом списков нечетной длины. Этот элемент доступен на next(g)

1

Еще проще:

>>> l = [35,10,5,3,1,26,15] 
>>> [l[i:i+2] for i in range(0, len(l)-1, 2)] 
[[35, 10], [5, 3], [1, 26]] 

Это отсечет любые нечетные элементы списка.

Смежные вопросы