Python 基础语法速通

第 4 章:集合类型

list / tuple / dict / set —— 日常数据搬运的核心。

01list 可变序列

Python
xs = [1, 2, 3]
xs.append(4)
xs[0] = 10
print(len(xs), xs[-1])
Kotlin
val xs = mutableListOf(1, 2, 3)
xs.add(4)
xs[0] = 10
println("${xs.size} ${xs.last()}")
ArkTS
const xs: number[] = [1, 2, 3];
xs.push(4);
xs[0] = 10;
console.info(`${xs.length} ${xs[xs.length - 1]}`);

02tuple 不可变序列

像「固定字段的轻量记录」;可拆包。

Python
point = (10, 20)
x, y = point
# point[0] = 1  # TypeError
Kotlin
val point = 10 to 20   // Pair
val (x, y) = point
// data class 更常见
ArkTS
const point: [number, number] = [10, 20];
const [x, y] = point;
函数多返回值本质是返回 tuple:return a, b。

03dict 键值映射

Python
user = {"id": 1, "name": "Ada"}
user["name"] = "Bob"
print(user.get("email", "n/a"))
for k, v in user.items():
    print(k, v)
Kotlin
val user = mutableMapOf("id" to 1, "name" to "Ada")
user["name"] = "Bob"
println(user["email"] ?: "n/a")
for ((k, v) in user) {
    println("$k $v")
}
ArkTS
const user: Record<string, string | number> = { id: 1, name: "Ada" };
user["name"] = "Bob";
console.info(user["email"] ?? "n/a");
for (const k of Object.keys(user)) {
  console.info(k, user[k]);
}

04set 去重集合

Python
s = {1, 2, 2, 3}   # {1, 2, 3}
s.add(4)
print(2 in s)
Kotlin
val s = mutableSetOf(1, 2, 2, 3)
s.add(4)
println(2 in s)
ArkTS
const s = new Set<number>([1, 2, 2, 3]);
s.add(4);
console.info(s.has(2));
空 set 必须写 set(),{} 是空 dict。

05切片

Python
a = [0, 1, 2, 3, 4]
print(a[1:4])    # [1, 2, 3]
print(a[::-1])   # 反转
Kotlin
val a = listOf(0, 1, 2, 3, 4)
println(a.subList(1, 4))
println(a.asReversed())
ArkTS
const a = [0, 1, 2, 3, 4];
console.info(a.slice(1, 4));
console.info([...a].reverse());

Python 基础语法速通 · 对照 Kotlin / ArkTS · 本地预览稿