2016-10-13 11 views
0

私はこの問題を解明するのには慣れていますが、特に1つのことに掛かっています。私はペアでリストのペアの要素をペア/ジップし、どの値が大きいかをチェックしようとしています。私はちょうど値を繰り返さずにこれらの要素をどのようにペアにするのか分かりません。繰り返しのないペアリング要素

[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]] 

これは、リストの任意の奇数番目の要素を切断します。

関連する問題