Hi All,

Beginner programmer here with an easy question I hope. I want to be able to compare the value of the first item in a list to the second item in the list to see if they are sequential.
so in this list: numblist = [1 , 2 , 3, 5, 6, 7, 8, 9, 11]
i want to be able to report on the gaps between 3-5 and 9-11 in the most efficient way.

My first try was to take the list and run the following for loop:

for i in numblist:
    if numblist[i] == numblist[i + 1] - 1:
        print 'yay'
    else:
        print 'gap'

But this creates an error when it gets to the last item in the list: IndexError: list index out of range. So what methods are available for referencing the next, previous and last items in sequential data?

Recommended Answers

All 3 Replies

You have simple use the try/except error routine:

numblist = [1 , 2 , 3, 5, 6, 7, 8, 9, 11]

for i in numblist:
    try:
        if numblist[i] == numblist[i + 1] - 1:
            print 'yay'
        else:
            print 'gap'
    except:
        pass

Iterate on all the list elements except the last one:

numblist = [1, 2, 3, 5, 6, 7, 8, 9, 11]

for i in range(len(numblist)-1):
    if numblist[i] == numblist[i + 1] - 1:
        print 'NO GAP between indexes %d and %d' % (i, i+1)
    else:
        print 'GAP between indexes %d and %d' % (i, i+1)

Output:

NO GAP between indexes 0 and 1
NO GAP between indexes 1 and 2
GAP between indexes 2 and 3
NO GAP between indexes 3 and 4
NO GAP between indexes 4 and 5
NO GAP between indexes 5 and 6
NO GAP between indexes 6 and 7
GAP between indexes 7 and 8

Both of those solutions worked well. Thanks so much!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.