Split list of integers at certain value efficiently
I would use a generator:

def splitz(seq, smallest):    
    group = []    
    for num in seq:
        if num != smallest:
            group.append(num)
        elif group:
            yield group
            group = []


numbers = [1, 3, 3, 5, 1, 5, 5, 5, 1, 6, 5, 4, 1]
min_val = min(numbers)
print(list(splitz(numbers, min_val)))


It prints:

[[3, 3, 5], [5, 5, 5], [6, 5, 4]]


You could time it:

if __name__ == '__main__':
    import timeit
    print(timeit.timeit("splitz(numbers, min_val)", setup="from __main__ import splitz, numbers, min_val", number=1000000))


On my machine, it is:

1.0186186955428558


Note the default number of times through the loop is one million.