Более простой способ сделать что-то для 1-го элемента A в C, который также находится в B, без повторения дважды - PullRequest
0 голосов
/ 05 октября 2018

Я создал следующий скрипт в Python 3, который делает то, что ему нужно, но он дважды просматривает мои элементы.Есть ли путь к такому же результату за одну итерацию?

if any(A in B for A in C):
    for A in C:
        if A in B:
            # Do something with A.
            # Order of iteration is important.
            break
else:
    # Do something else

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Наиболее эффективным способом, вероятно, было бы получить A за одну итерацию на уровне C (используя filter и next), а затем сразу использовать его.

A = next(filter(B.__contains__, C), None)

if A is not None:
    # Do something with A
else:
    # Do something else
0 голосов
/ 05 октября 2018
Циклы

for также могут иметь предложения else, которые они вводят, если вы не break из них.Таким образом, ваш цикл может быть записан

for A in C:
    if A in B:
        # Do something
        break
else:
    # Do something else
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...