0
def run_counter():
    #list1 = generate_integer_list(num_int, low_range, high_range)
    list1 = [6, 12, 9, 10, 1, 2, 3, 4]
    run = 0
    for i in range(len(list1) - 2):
        while i < len(list1) - 1 and list1[i] == list1[i+1] - 1:
            run = i + 1
            i += 1
    return run, i - run+1

运行是数字的连续顺序:1、2、3、4、10、11、12 等。对于那些不知道的人。

我正在尝试创建一个函数,该函数返回它在列表中遇到的第一次运行的长度,以及运行开始的索引。

我上面的代码并没有真正完成这项工作。它应该返回,长度为 2,从 2 开始,但返回长度为 7 并从 1 开始。有什么想法吗?

4

1 回答 1

0
>>> def runCounter(L):
...   answer = []
...   start = 0
...   end = 1
...   while end < len(L):
...     if L[end] < L[end-1]:
...       answer.append(end-start)
...       start, end = end, end+1
...     end += 1
...   answer.append(end-start)
...   return answer
... 
>>> L = [6, 12, 9, 10, 1, 2, 3, 4]
>>> runCounter(L)
[2, 2, 4]
于 2013-11-12T02:41:01.690 回答