Если вы перебираете lis t в Python, переменная (в этом случае: i и j) получит назначенный каждому элементу итерируемого объекта, который вы передаете ему.
Глядя на ваш код и assumtion вывода Я полагаю эти списки определяются:
lst1 = ['a', 'b', 'c']
lst2 = ['m', 'n']
cartesian_list = []
Имейте в виду, что каждый элемент из обоих списков является строкой.
В коде вы пытаетесь взять индекс i (где i - строка!) Lst1. Это невозможно. «Ошибка типа», которую вы видите, - это просто Python, говорящий вам, что i (и j, если на то пошло) является строкой. Это должно быть целое число, которое должно использоваться как это.
Есть два основных способа крепления этого:
for i in lst1:
for j in lst2:
cartesian_list.append([i, j])
Таким образом, вы должны изменить только часть вашего кода. Другой способ устранения проблемы - сделать i и j итерацией по индексам, как вы их намеревались сделать.
for i in range(len(lst1)):
for j in range(len(lst2)):
cartesian_list.append([lst1[i], lst2[j]])
Используя этот метод, я Переберу теоретический список [0, 1, 2 ... Len (lst1) -1]. Range() исключает последнее заданное значение, поэтому безопасно использовать только len() (что дало бы 3, если последний индекс равен 2).
Надеюсь, я помог!
Ну, ошибка говорит, что происходит. Вы не можете получить доступ к 'list ['a']'. –
Я думаю, что сообщение об ошибке понятно. – jogo
Цикл 'for' Python - это' для каждого'; 'для i в lst1:' итерации по элементам в списке, а не их индексы ... – jonrsharpe