Форум сайта python.su
Проблема следущая. Дан некоторый многоуровневый массив данных (например data=[1,2,3,[1,2,3,4,[1,2,3, ] ] ]). Число элементов и их тип произвольное. После выполнения какого-либо действия требуется изменить одно значение в этом массиве. “Путь” к значению, которое надо изменить задается списком(например массив соотдветсвует значению data).
Вопрос: как изменить нужное значение?
Офлайн
>>> a=[1,2,3,[1,2,3,4,[1,2,3,[1,2] ] ] ]
>>> a
[1, 2, 3, [1, 2, 3, 4, [1, 2, 3, [1, 2]]]]
>>> a[3][0]=55
>>> a
[1, 2, 3, [55, 2, 3, 4, [1, 2, 3, [1, 2]]]]
michailsвот эта часть вопроса непонятна - это могут быть не многоуровневые массивы?
Число элементов и их тип произвольное
Офлайн
a = [1,1,[3,[1,2,3]],1,1,1]
b = [4,1,2]
d = a
for c in b:
if type(d)==list:
d = d[c]
else: break
print(d)
Офлайн
doza_and уже про это написал, но тем не менее:
>>> data=[1,2,3,[1,2,3,4,[1,2,3,[1,2] ] ] ]
>>> doroga = [3,4,1]
>>> data[doroga[0]][doroga[1]][doroga[2]]
2
>>> data[doroga[0]][doroga[1]][doroga[2]] = 5
>>> data[doroga[0]][doroga[1]][doroga[2]]
5
>>> data
[1, 2, 3, [1, 2, 3, 4, [1, 5, 3, [1, 2]]]]
Отредактировано (Дек. 27, 2011 12:44:45)
Офлайн
Взможно я не очень понятно объяснил.
Изначально я эту проблему решил примерно также, как описал FireOwl .
Вопрос в другом: если более красивый способ выполнить такую операцию, кроме как обработать копию списка и затем переписать значение исходного списка.
Офлайн