Почему приведенный ниже код не дает никаких результатов? - PullRequest
0 голосов
/ 14 июля 2020

Есть два фрагмента кода, верхний работает, а нижний - нет. Почему второй фрагмент кода ничего не выводит?

#This code works:
x=["Decomplete asd"]
y=[]
z=[]
for i in x:
    if "De" in i:
        y.append(i)
        print(y)
    if "comp" in i:
        z.append(i)
        print(z)

# This one does not:
x=["Decomplete asd"]
y=[]
z=[]
if "De" in x:
    y.append(x)
    print(y)
if "comp" in x:
    z.append(x)
    print(z)

Ответы [ 2 ]

1 голос
/ 14 июля 2020

добро пожаловать, Никат!

Это потому, что X - это список , содержащий одну строку. Но x не является самой строкой.

Итак:

  • в первом случае я принимает значение каждого элемента в этом списке (поскольку длина этого списка = 1 , l oop будет быстро сделано). Поэтому, когда я = «Decomplete asd», что является строкой , условия истинны: «De» и «comp» находятся в этой строке.

  • in во втором случае условия применяются непосредственно к x. И x - это список, а не строка. Это означает, что вы ищете строки «De» и «comp» в списке, который их не содержит, как элементы.

Это сработало бы, если бы у вас было x = ["De", "comp", "hello"] например.

Или если бы у вас было x = "Decomplete asd" (т.е. строка без [ и ]).

Надеюсь, это помогло!

0 голосов
/ 14 июля 2020

Код ниже for l oop проверяет наличие de только один раз.

Код добавляет каждую строку для каждого экземпляра. По сути, верхний код не перестает искать, пока код не пройдет через все части коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...