Ответ:
Если я правильно понял, вам не нужны переменные rows, coln
, поскольку петли зависят от размеров list_string
и list_string2
arr = [list_string[:] for _ in range(len(list_string2))]
for i, l in enumerate(arr):
l.insert(0, list_string2[i])
Это даст ожидаемый результат:
>>> print(arr)
[['1', '1', '12', '15', '21', '131'],
['2', '1', '12', '15', '21', '131'],
['3', '1', '12', '15', '21', '131'],
['4', '1', '12', '15', '21', '131'],
['5', '1', '12', '15', '21', '131']]
Прежде всего, здесь есть дополнительная скобка
arr[i][j] = [list_string[i]] [list_string2[j]])
^
Чтобы объяснить ошибку, она приходит отсюда
arr[i][j] = [list_string[i]] [list_string2[j]]
[list_string[i]]
возвращает новый список с элементом из list_string
. Для i=0
это ["1"]
. Для [list_string2[j]]
это ["1"]
для j=0
Когда вы ставите квадратные скобки после списка, синтаксически для доступа к элементу списка. Таким образом, последняя строка вашего кода эквивалентна приведенному ниже
lstr = ["1"] # [list_string[0]]
arr[i][j] = lstr["1"] # [list_string[0]] [list_string2[0]]
Вы пытаетесь получить доступ к элементу "1"
списка, который не имеет смысла. Вот почему вы получаете TypeError: list indices must be integers or slices, not str