根据条件对列表进行分区
根据给定条件将列表分成两部分时,很容易迭代列表两次,创建两个新列表,如下所示:
good = [x for x in mylist if x in goodvals] bad = [x for x in mylist if x not in goodvals]
但是,这种方法需要两个单独的列表对列表进行迭代,这可能效率低下。为了提高性能,请考虑使用带有条件附加的手动迭代:
good, bad = [], [] for x in mylist: (bad, good)[x in goodvals].append(x)
在此代码中:
这种方法避免了两次单独迭代的需要,通过减少列表的数量来提高性能从二到一的遍历。它也被认为更优雅,因为它以简洁易读的方式捕获分区逻辑。
以上是如何根据条件高效对列表进行分区?的详细内容。更多信息请关注PHP中文网其他相关文章!