python相当于scala分区

标签 python scala

我目前正在将一些 Scala 代码移植到 Python,我想知道做类似于 Scala 的 partition 的事情的最 pythonic 方式是什么?特别是,在 Scala 代码中,我遇到这样一种情况,即根据我传入的某个过滤谓词返回 true 还是 false 对项目列表进行分区:

val (inGroup,outGroup) = items.partition(filter)

在 Python 中执行此类操作的最佳方法是什么?

最佳答案

使用过滤器(需要两次迭代):

>>> items = [1,2,3,4,5]
>>> inGroup = filter(is_even, items) # list(filter(is_even, items)) in Python 3.x
>>> outGroup = filter(lambda n: not is_even(n), items)
>>> inGroup
[2, 4]
>>> outGroup

简单循环:

def partition(item, filter_):
    inGroup, outGroup = [], []
    for n in items:
        if filter_(n):
            inGroup.append(n)
        else:
            outGroup.append(n)
    return inGroup, outGroup

例子:

>>> items = [1,2,3,4,5]
>>> inGroup, outGroup = partition(items, is_even)
>>> inGroup
[2, 4]
>>> outGroup
[1, 3, 5]

关于python相当于scala分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693175/

相关文章:

python - 检查列表理解中列表的长度(基于列表理解中元素的计数迭代)

python - 使用 virtualenv 安装 django1.7 和 Python 3.4

python - 并行目录遍历 python

python - RandomForestClassifier 可视化 - 重叠颜色

scala - 隐式参数不适用于 unapply。如何从提取器中隐藏无处不在的参数?

xml - Scala:jaxb 或类似的?

json - 具有默认参数的通用案例类的 Circe 编码器

python - 查找范围内众数的方法

scala - 递归迭代嵌套的 Map[String, Any]

scala - 错误 SparkContext : Error initializing SparkContext