我有以下代码作为两个列表理解,但我想要一种方法,我只需要迭代 edges 一次。
out_indices = [x for x, (p, d) in enumerate(edges) if d == "O"]
in_indices = [x for x, (p, d) in enumerate(edges) if d == "I"]
我可以通过 edges 上的非常非 pythonic 循环来完成它,并有两个预初始化列表将 x 放入两个 if 语句中,但我想知道如果有一个 pythonic/prettier 方法来做到这一点。
请您参考如下方法:
不,你只需要做你想避免的事情(顺便说一句,根本不是非 pythonic 的)。想一想 - 如果您想在一次迭代中完成它,您必须有条件地附加到任何一个列表,这显然不适用于理解:
out_indices = []
in_indices = []
for x, (p, d) in enumerate(edges):
if d == 'O':
out_indices.append(x)
elif d == 'I':
in_indices.append(x)
