一种更简单的方法,无需迭代两次即可对 C 中 A 的第一项执行操作,该项也在 B 中

A simpler way to do something for the 1st item of A in C that is also in B without iterating twice

我在 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

for 循环也可以有 else 子句,如果你不 break 的话它们就会进入。所以你的循环可以写成

for A in C:
    if A in B:
        # Do something
        break
else:
    # Do something else

最有效的方法可能是在 C 级别的单次迭代中获得 A(使用 filternext),然后立即使用它。

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

if A is not None:
    # Do something with A
else:
    # Do something else