i've been spending some time on this, but i'm still learning and haven't managed to do it. Well partialy i did, but i don't want the entering variable to be changed.
def changeit(element, value1, value2):
if type(element) == list:
for index, element2 in enumerate(element):
if element2 == value1:
element[index] = value2
if type(element2) == list:
changeit(element2, value1, value2)
if value1 not in element:
return element
def changelist(inputlist, value1, value2):
for index, element in enumerate(inputlist):
if type(element) == list:
changeit(element, value1, value2)
if element == value1:
inputlist[index] = value2
return inputlist
So the function should replace all value1 for value2. The desired output would be:
>>> k = [[[7]], 8]
>>> print(changelist(k, 7, 'a'))
[[['a']], 8]
>>> k
[[[7]], 8]
but so far i'm getting:
>>> k = [[[7]], 8]
>>> print(changelist((k,7,"x"))
[[['x']], 8]
>>> k
[[['x']], 8]
And i just can't find a way how to not change the entering list. Thanks!