Search code examples
pythonloopsincrement

Python - Reset Increment


I have a list of values in a column (A) and want to increment by 1 in column (B) until the value in A changes, however, having difficulty in my loop to reset the increment when A changes.

B = []
list_length = len(A)

for i in range(0, list_length):
    j = 1
    while A[i] == A[i+1]:
        B = j
        j += 1
        i += 1
    else:
        B = 1
        j += 1

Here is desired output:

Product(A) No.(B)
Apple 1
Apple 2
Apple 3
Orange 1
Orange 2
Orange 3
Orange 4
Orange 5
Orange 6
Melon 1
Melon 2
Peach 1
Peach 2
Peach 3
Peach 4

Solution

  • The other two answers are awesome, but I was initially stuck to follow your initial approach with the counter, so here's what I did:

    from prettytable import PrettyTable
     
    fruit_table = PrettyTable(["Product(A)", "No.(B)"])
    
    products = ["Apple", "Apple","Apple", "Orange","Orange","Orange","Orange","Orange","Melon","Melon", "Peach","Peach","Peach"]
    
    counter = 0
    for i in range(0, len(products)-1):
    
        if products[i] == products[i+1]:
            counter+= 1
            fruit_table.add_row([products[i],counter])
        else:
            fruit_table.add_row([products[i],counter+1])
            counter=0
    
    print(fruit_table)
    

    Output:

    +------------+--------+
    | Product(A) | No.(B) |
    +------------+--------+
    |   Apple    |   1    |
    |   Apple    |   2    |
    |   Apple    |   3    |
    |   Orange   |   1    |
    |   Orange   |   2    |
    |   Orange   |   3    |
    |   Orange   |   4    |
    |   Orange   |   5    |
    |   Melon    |   1    |
    |   Melon    |   2    |
    |   Peach    |   1    |
    |   Peach    |   2    |
    +------------+--------+