Ответ на ваш вопрос заключается в том, что разница между этими двумя кодами ПОЛНОСТЬЮ различна.
Вы должны научиться разбивать вещи концептуально. Итак, вы понимаете:
if x in listA:
но не:
if x in listA[j]:
так что тогда?:
listB = listA[j]
if x in listB
Ответ в том, что listA - это список вещей. Что это такое, зависит от вашего кода и того, что вы пытаетесь сделать. В этом случае вещи IN listA снова являются списками. Приведенный выше блок кода демонстрирует это. Вы можете вытащить список в позиции 'j' из списка A, а затем использовать его так же, как и любой другой список. Неважно, что это произошло из другого списка. Это понятие ломания вещей: some_variable [some_index] - это одна концепция, а some_variable в some_list - это другая. Программирование точно объединяет вещи таким образом.
Итак, это:
if x in array[j] and array[j].index(x) == 0:
предполагает, что array [j] - это список, а x - это то, что вы можете найти в этом списке. Точно так же, поскольку array [j] является списком, вы можете вызвать .index () для него. Этот код ничего не говорит о том, что такое x . Это просто то, что можно поместить в список.
if array[j] in x and x.index(array[j]) == 0:
это говорит о том, что x - это список, а array [j] - это то, что может быть в этом списке. Вы просто поменялись ролями двух вещей. Важно понимать, что x и array [j] в общем случае могут быть одним и тем же объектом. Просто в случае x у вас есть прямая ссылка на этот объект, а в случае array [j] вы извлекаете этот объект из списка.
Кстати, я говорю "список", чтобы все было просто. Чтобы быть более точным, всякий раз, когда я говорил «список», я имел в виду что-то, что представляет собой тип последовательности Python, что-то, что имеет понятие «первый элемент, второй элемент и т. Д.». Любое количество вещей, включая ваши собственные объекты, которые вы определяете, может быть типом Sequence и, следовательно, быть тем, о чем мы говорим выше, когда мы говорим «список». С таким кодом вы обычно имеете дело со «списком» или иногда с «кортежем», который является просто «списком», который вы не можете изменить.