@qqqqqqqqqqqa

Как изменить значение элемента массива, подставляя некую переменную в качестве индекса этого элемента в массиве?

Есть определенный неизменяющийся массив чисел, который нужно после некоторых операций над ним выводить в консоль. Сами операции - изменение 1 из элементов массива на что-то другое в зависимости от каких-то условий (оговаривать не буду, т.к. это немного другое). Прикол в том, что у самого изменяющегося элемента время от времени изменяется индекс, т.е. нужно изменять разные по глубине в массиве элементы. Сам индекс я нахожу через опред. функцию, возвращающую подобное: "[1][5][0][4][1]" (это именно str)

Немного кода:

array1 = [0, 1, 5 [5, [1, 2, 3, 4, 5,  6,  7,  8,  9,  10], 0,  0,  0,  0]]     #какой-то изначальный многомерный массив

def some_way(arr):     #возвращает "путь" к 1 (допустим рандомный) из элементов передаваемого в формате str
    some code
    return way_to_some_element

path = some_way(array1)
array path = 5     #равносильно с array[5][0][что-то там-то] = 5 (значения в скобках могут изменяться в зависимости от каких-нибудь параметров функции)
print(array)


Сами, думаю, понимаете, что обозначать элемент массива (или списка) нельзя, и да, я уже пробовал что-то наподобие int(path) и т.д., но это, похоже, так не работает. Подскажите, как реализовать то, что я хочу сделать? Если что-то непоня-то - спрашивайте
(гуглить пытался)
  • Вопрос задан
  • 1017 просмотров
Решения вопроса 1
@AWEme
Retard Soft Inc.
def change(arr, indexes, value):
    head, tail = indexes[:-1], indexes[-1]
    for i in head:
        arr = arr[i]
    arr[tail] = value

>>> arr = [0, 1, 5, [5, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 0,  0,  0,  0]]
>>> change(arr, [3, 1, 0], 999)
>>> arr
[0, 1, 5, [5, [999, 2, 3, 4, 5, 6, 7, 8, 9, 10], 0, 0, 0, 0]]


arr - ссылка на массив с подмассивами
indexes - массив индексов
value - значение, которое будет вставлено в список
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
21 июн. 2024, в 23:20
10000 руб./за проект
21 июн. 2024, в 23:14
600 руб./за проект
20 июн. 2024, в 17:08
3000 руб./в час