Creating a list within a list in Python

前端 未结 5 1344
挽巷
挽巷 2021-01-21 05:48

I have a list named values containing a series of numbers:

values = [0, 1, 2, 3, 4, 5, ... , 351, 0, 1, 2, 3, 4, 5, 6, ... , 750, 0, 1, 2, 3, 4, 5, ... , 559]
         


        
5条回答
  •  忘掉有多难
    2021-01-21 06:45

    You can use itertools.groupby by finding all groups where each value is less than the element that proceeds it in values:

    import itertools
    values = [0, 1, 2, 3, 4, 5, 351, 0, 1, 2, 3, 4, 5, 6, 750, 0, 1, 2, 3, 4, 5, 559]
    new_vals = [[i[-1] for i in b] for a, b in itertools.groupby(enumerate(values), key=lambda x:x[-1] <= values[x[0]+1] if x[0]+1 < len(values) else False)]
    final_data = [new_vals[i]+new_vals[i+1] for i in range(0, len(new_vals), 2)]
    

    Output:

    [[0, 1, 2, 3, 4, 5, 351], [0, 1, 2, 3, 4, 5, 6, 750], [0, 1, 2, 3, 4, 5, 559]]
    

提交回复
热议问题