Что противоположно `x in y` в выражении понимания / генератора списка? - PullRequest
1 голос
/ 13 июля 2020

Пример, который я придумал, был примерно таким:

identified_characters = ["a","c","f","h","l","o"]
word = "alcachofa#"
if any(character in word for character not in identified_characters):
    print("there are unidentified characters inside the word")
else:
    print("there aren't unidentified characters inside the word")

, но not вызывает синтаксическую ошибку, поэтому я подумал, что если бы было out (противоположное in Я полагаю) теоретически вы можете изменить not in и сохранить синтаксис.

Я также думал, что logi c данного результата должен быть противоположен функции any, но поискал I увидел, что ppl пришел к выводу, что противоположность any должна быть not all, и в этом случае здесь не будет работать.

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Вы не можете l oop перебрать все возможные элементы, не входящие в identified_characters; их необъяснимо много. Это даже не имеет смысла в концепции.

Чтобы достичь того, чего вы хотите (проверяя, есть ли неопознанные символы (символы не в identified_characters) в word), вам придется l oop более word, а не дополнение identified_characters.

identified_characters = {"a", "c", "f", "h", "l", "o"}

word = "alcachofa#"
if any(character not in identified_characters for character in word):
    print("there are unidentified characters inside the word")
else:
    print("there aren't unidentified characters inside the word")
1 голос
/ 13 июля 2020

Вместо использования not в операторе for используйте его в части character in word.

identified_characters=["a","c","f","h","l","o"]
word="alcachofa#"
if any(character not in identified_characters for character in word):
    print("there are unidentified characters inside the word")
else:
    print("there aren't unidentified characters inside the word")

Для циклов можно использовать in, но не not in, потому что они не имеют идея, что означает not in! Циклы For предназначены для перебора списков или любых итерируемых элементов и не могут перебирать то, что не входит в итерацию, поскольку они понятия не имеют , что «не входит» в итерацию. Вы также можете использовать not all следующим образом:

...