Add a random value to all items in a list

Tags: , ,



I have a list:

[[[1, 2, 3]], [1, 2, 3], [[2]]]

Is there a way to add a random value to all the items without having to do something like this:

from random import randit
[[[list[0][0][0]+randit(0, 10), list[0][0][1]+randit(0, 10), list[0][0][2]+randit(0, 10)]],..

Answer

One option is to use a recursion:

from random import randint

def substitute(lst):
    if isinstance(lst, int):
        return lst + randint(1, 10)
    else:
        for i, item in enumerate(lst):
            lst[i] = substitute(item)
        return lst

your_list = [[[1, 2, 3]], [1, 2, 3], [[2]]]

print(your_list)
print(substitute(your_list))

outputs:

>>>[[[1, 2, 3]], [1, 2, 3], [[2]]]
>>>[[[10, 10, 5]], [11, 9, 7], [[6]]]

Can also phrased in one line:

from random import randint

def recursion(lst):
    return lst + randint(1, 10) if isinstance(lst, int) else [recursion(item) for item in lst]



Source: stackoverflow