Python: Правильное использование any () для проверки, существует ли одно значение одного массива в другом массиве? - PullRequest
0 голосов
/ 08 февраля 2019

В Python я пытаюсь создать оператор if, который выполняется, если одна переменная одного массива существует где-то в другом списке или массиве.Вот мой основной код, который должен проверить, существуют ли какие-либо значения в ids в follow_num:

ids = [123,321,111,333]
follow_num = [111, 222]

if any(ids == follow_num):
    print(ids)

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

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

В качестве альтернативы вы можете сравнить два набора:

ids = [123, 321, 111, 333]
follow_num = [111, 222]

matches = list(set(ids) & set(follow_num))

print(matches)
# [111]

print(bool(matches))
# True
0 голосов
/ 08 февраля 2019
>>> ids = [123,321,111,333]
>>> follow_num = [111, 222]
>>> if set(ids).intersection(follow_num): 
...   print(ids)
... 
[123, 321, 111, 333]
0 голосов
/ 08 февраля 2019

Вы должны пройти через каждое значение в ids и проверить, существует ли any из этих значений в follow_num.Используйте any с генератором:

if any(i in follow_num for i in ids):
    print(ids)

Вывод:

[123,321,111,333]

Редактировать:

Если вы хотите напечатать какие-либо совпадения any() неработать, вы должны использовать цикл for, так как any() вычисляет для всего списка.Пример:

for i in ids:
    if i in follow_num: print(i)

Обратите внимание, что вы можете ускорить обе эти операции, предварительно преобразовав follow_num в set(), выполнив follow_num = set(follow_num).Это быстрее, потому что set имеет O(1) в действии, по сравнению со списками, которые вычисляют in в O(N).

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