You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python的列表、集合、字典推导式在Kotlin中的等价写法是什么?

Kotlin中等价于Python推导式的实现

没错,Kotlin确实没有沿用Python里“推导式”这个术语,但它通过一套强大的集合操作API,能实现和Python推导式完全一样的效果——甚至在灵活性上有过之而无不及。下面我就针对你提到的三种推导式,逐一给出Kotlin的等价实现:

1. 列表推导式

Python里的列表推导式可以快速生成过滤或转换后的列表,比如:

# Python示例:生成0-9中偶数的两倍列表
[x * 2 for x in range(10) if x % 2 == 0]

在Kotlin里,你有两种常用方式实现等价效果:

链式集合操作

利用filter(过滤)和map(转换)的链式调用,代码逻辑清晰直观:

// Kotlin等价写法:链式调用
(0..9).filter { it % 2 == 0 }.map { it * 2 }

构建器函数

如果逻辑更复杂(比如嵌套循环),用buildList构建器会更易读,它允许你用命令式风格生成列表:

// Kotlin等价写法:buildList构建器
buildList {
    for (x in 0..9) {
        if (x % 2 == 0) {
            add(x * 2)
        }
    }
}

2. 集合推导式

Python的集合推导式用来生成去重的集合,比如:

# Python示例:生成0-9中偶数两倍的集合
{x * 2 for x in range(10) if x % 2 == 0}

Kotlin里对应的实现同样有两种方式:

链式操作转集合

在列表操作的基础上调用toSet()即可:

// Kotlin等价写法:链式调用转Set
(0..9).filter { it % 2 == 0 }.map { it * 2 }.toSet()

集合构建器

用buildSet构建器直接生成集合,避免中间列表的创建:

// Kotlin等价写法:buildSet构建器
buildSet {
    for (x in 0..9) {
        if (x % 2 == 0) {
            add(x * 2)
        }
    }
}

3. 字典推导式

Python的字典推导式用来生成键值对映射,比如:

# Python示例:生成0-9中偶数到其两倍的字典
{x: x * 2 for x in range(10) if x % 2 == 0}

Kotlin里的等价实现如下:

associate函数

用associate函数直接将元素映射为键值对,简洁高效:

// Kotlin等价写法:associate函数
(0..9).filter { it % 2 == 0 }.associate { it to it * 2 }

映射构建器

复杂逻辑下使用buildMap构建器,支持更灵活的键值对添加逻辑:

// Kotlin等价写法:buildMap构建器
buildMap {
    for (x in 0..9) {
        if (x % 2 == 0) {
            put(x, x * 2)
        }
    }
}

处理多循环场景

如果遇到Python里多循环的推导式(比如[x+y for x in [1,2,3] for y in [4,5,6]]),Kotlin也能轻松应对:

// 对应多循环推导式的链式写法
listOf(1,2,3).flatMap { x -> listOf(4,5,6).map { y -> x + y } }

// 或者用buildList的嵌套循环写法
buildList {
    for (x in listOf(1,2,3)) {
        for (y in listOf(4,5,6)) {
            add(x + y)
        }
    }
}

内容的提问来源于stack exchange,提问作者Jayson Minard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:34:44