Вставить строку по указанному индексу в 2D массив - PullRequest
0 голосов
/ 12 декабря 2018

Я хотел бы вставить строку по указанному индексу в строку массива за 2 шага.Из матрицы:

A=[[1, 2, 3, 4, 5],
   [6, 7, 8, 9, 10],
   [1, 1, 2, 2, 3],
   [2, 3, 4, 5, 6],
   [4, 5, 6, 7, 7],
   [5, 7, 6, 8, 9]]

Хотелось бы получить:

A=[[**x**, 2, 3, 4, 5],
   [6, 7, 8, 9, 10],
   [**x**, 1, 2, 2, 3],
   [2, 3, 4, 5, 6],
   [**x**, 5, 6, 7, 7],
   [5, 7, 6, 8, 9]]

или:

A=[[1, 2, 3, 4, 5],
   [**x**, 7, 8, 9, 10],
   [1, 1, 2, 2, 3],
   [**x**, 3, 4, 5, 6],
   [4, 5, 6, 7, 7],
   [**x**, 7, 6, 8, 9]]

или:

A=[[1, 2, **x**, 4, 5],
   [6, 7, 8, 9, 10],
   [1, 1, **x**, 2, 3],
   [2, 3, 4, 5, 6],
   [4, 5, **x**, 7, 7],
   [5, 7, 6, 8, 9]]

и так далее.Я надеюсь, вы понимаете мой вопрос (я использовал жирные буквы, чтобы различать строки).Если я попытаюсь:

def r(l):
    for i in l[::2]:
        i.insert(0, 'x')
    return l

, он вернет:

У объекта 'int' нет атрибута 'insert'

, но я полагаю, что это не так 'Это мой очень ценный комментарий, если я не пойму, как мне выполнить задачу ...

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете использовать простую индексацию вместо insert:

def r(l, idx=0):
    for i in l[::2]:
        i[idx] = 'x'
    return l

>>> print(r(A))
[['x', 2, 3, 4, 5], [6, 7, 8, 9, 10], ['x', 1, 2, 2, 3], [2, 3, 4, 5, 6], ['x', 5, 6, 7, 7], [5, 7, 6, 8, 9]]

Аргумент idx дает индекс, где вы хотите изменить запись.Например, если вы хотите изменить третий элемент на x, используйте:

>>> print(r(A, idx=2))
[[1, 2, 'x', 4, 5], [6, 7, 8, 9, 10], [1, 1, 'x', 2, 3], [2, 3, 4, 5, 6], [4, 5, 'x', 7, 7], [5, 7, 6, 8, 9]]
...