Python: если - в операторе.Есть ли разница между этими двумя кодами? - PullRequest
0 голосов
/ 23 марта 2019

Есть ли разница в этих двух кодах?

if x in array[j] and array[j].index(x) == 0:

и,

if array[j] in x and x.index(array[j]) == 0:

Как я могу интерпретировать эти два кода?

Например, это будет что-то вроде

'r', 'b', 'rbrb'

или

'BRBRBBBRBRRRBBB', 'BRBRBRRRBRRRBRB', 'BBBRBBBRBRRRBBB', 'BRBRBRRRBRRRB', 'BRBRBRRBRRRB', 'BRBRBBRRBBRB'

* * * * * * * 10 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 * * * * * * * * * * * * * * * * * * * * * * 10 "*"в этом коде в течение нескольких часов, чтобы получить представление, но я не мог даже сузить мои вопросы, чтобы задавать их в поисковых системах, и теперь я запутался.

Я был знаком с такими кодами, как ...

if x in listA:

или

listA.index(x) 

Но с трудом используя флаг = False и

if x in listA[j]:

или

listA[j].index(x)

Если возможно, что я долженучиться, чтобы получить больше понимания этого вопроса?

Спасибо за помощь!

1 Ответ

2 голосов
/ 23 марта 2019

Ответ на ваш вопрос заключается в том, что разница между этими двумя кодами ПОЛНОСТЬЮ различна.

Вы должны научиться разбивать вещи концептуально. Итак, вы понимаете:

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 и, следовательно, быть тем, о чем мы говорим выше, когда мы говорим «список». С таким кодом вы обычно имеете дело со «списком» или иногда с «кортежем», который является просто «списком», который вы не можете изменить.

...