2014-03-27 3 views
-1

Мне нужно определить # последовательностей, которые находятся в списке целых чисел. Член в списке может быть частью последовательности он падает в диапазоне 65 Так в моем списке,Число последовательностей в списке

43 
83 
90 
250 
265 
500 

43,83,90 все члены в 1 последовательности, все они попадают в диапазон из 65. Также 250 265 составляют 1 последовательность. Сейчас мой код создает кортежи из списка. (43,83) (83,90), но Доцент знает, что они оба являются частью одной и той же последовательности.

while count < len(w_seq_list)-1: 
if((w_seq_list[count+1] > w_seq_list[count]) and ((w_seq_list[count+1] - w_seq_list[count]) <= 65)): 

    wr.append((w_seq_list[count],w_seq_list[count+1])) // add tuple to sequence list 
    count += 1 
else: 
    count += 1 
    continue 

Что я могу добавить, чтобы определить, соответствуют ли мои кортежи в одной последовательности, чтобы получить правильный счет? Дайте мне знать, если вам нужно больше разъяснений. Благодаря!

+0

Что делать, если у вас были '15, 43, 83, 90'? Это будет одна последовательность, или у вас будет две последовательности: '15, 43' и' 43, 83, 90'? – Michelle

+0

Это должно быть 2. (90-15)> 65 и (83-15)> 65 – coderkid

+0

, но почему 43 будет отделен от 83? – njzk2

ответ

1
def grouper(my_list): 
    previous, temp, result = my_list[0], [my_list[0]], [] 
    for number in my_list[1:]: 
     if number - previous > 65: 
      result.append(temp) 
      temp, previous = [number], number 
     else: 
      temp.append(number) 
    if temp: 
     result.append(temp) 
    return result 

assert(grouper([43, 83, 90, 250, 265, 500]) == [[43, 83, 90], [250, 265], [500]]) 
assert(grouper([15, 43, 83, 90]) == [[15, 43], [83, 90]]) 
Смежные вопросы