首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >App Inventor 2 列表积木完全指南:从入门到精通,一篇搞定数据存储

App Inventor 2 列表积木完全指南:从入门到精通,一篇搞定数据存储

原创
作者头像
用户10956490
发布2026-07-04 14:37:29
发布2026-07-04 14:37:29
370
举报

做 App 的时候,你一定会遇到这样一个问题:数据太多了,变量根本管不过来。 比如一个购物清单有 20 样商品,难道要建 20 个变量?一个用户通讯录有 100 条记录,难道要写 100 个变量?当然不用。列表(Lists) 就是帮你批量管理同类数据的利器。今天这篇文章,我会把 App Inventor 2 中所有列表积木的用法掰开揉碎讲清楚,从基础创建到高级函数式操作,看完就能上手用。


一、列表是什么?为什么如此重要?

列表本质上是一个有序的数据集合。你可以把它想象成一排带编号的抽屉,每个抽屉里放一个数据项,编号从 1 开始(注意,不是从 0 开始)。

和普通变量只能存一个值不同,一个列表可以存放任意数量的数据项,而且支持混合类型——你可以在同一个列表里放文字、数字、布尔值,甚至嵌套另一个列表。这种灵活性让列表成为 App Inventor 2 中最核心的数据结构。


二、基础操作:创建与添加

1. 创建空列表

使用 创建空列表 积木,初始化一个没有任何元素的列表。通常搭配变量使用:

代码语言:txt
复制
设置 global myList = [ 创建空列表 ]
```txt

这是最常见的初始化方式,先创建空列表,再在程序运行过程中动态添加数据。

2. 创建列表

使用 创建列表 积木可以直接给定初始值。点击蓝色齿轮可以新增更多列表项槽位,这是一个块扩展(Mutator)特性。

代码语言:txt
复制
设置 global colors = [ 创建列表: "红" "绿" "蓝" ]
```txt

你甚至可以创建混合类型的列表(类似 Python 的元组 Tuple),比如:

代码语言:txt
复制
设置 global userInfo = [ 创建列表: "张三" 25 true ]
```txt

这里依次存放了字符串(姓名)、数字(年龄)、布尔值(是否会员),取出来时保持原类型不变。

3. 追加列表项

使用 追加列表项 积木,将新元素添加到列表末尾。同样是块扩展积木,点击齿轮可以一次添加多项。

代码语言:txt
复制
追加列表项 到 global colors: "黄"
```txt

三、查询操作:查找、判断与选取

1. 检查列表是否包含某对象

使用 列表中是否包含 积木,返回布尔值(true/false)。

⚠️ 注意:如果列表包含子列表,子列表的成员本身并不是外层列表的成员。例如列表 [1, 2, [3, 4]] 的成员是 1、2 和 [3, 4],而 3 和 4 不是该列表的直接成员。

2. 求列表长度

求列表长度 积木返回列表中的项目数,一目了然。

3. 列表是否为空

列表是否为空? 返回 true/false。这在遍历前做安全检查时非常有用,避免对空列表操作导致报错。

4. 随机选取列表项

随机选取列表项 从列表中随机返回一个元素。如果列表为空会抛出异常,所以务必先判空。

5. 求对象在列表中的位置

求对象在列表中的位置 返回元素的索引值(从 1 开始),如果不存在则返回 0。

6. 选择列表中索引值对应的列表项

这是最常用的读取操作,通过索引取出对应位置的元素:

代码语言:txt
复制
选择列表项 列表: global colors, 索引: 2  → 返回 "绿"
```txt

四、修改操作:插入、替换与删除

1. 在列表某个位置插入项

在列表的位置插入 将新元素插入到指定索引处,原有元素自动后移。

2. 替换列表中索引值对应的项

替换列表中索引值对应的列表项 用新值替换指定位置的旧值。

3. 删除列表中某项

删除列表中某项 根据索引移除对应元素,后续元素自动前移。


五、进阶操作:合并、复制与反转

1. 追加整个列表

将一个列表中所有项追加到另一个列表中 把第二个列表的全部元素添加到第一个列表末尾。注意这不是嵌套,而是合并。

2. 复制列表

复制列表 生成列表的深拷贝(包括所有子列表)。这在需要保留原始列表、操作副本的场景下非常关键。

💡 避坑提示:直接用赋值 设置 listB = listA 只是引用同一个列表,修改其中一个另一个也会变!需要真正复制时务必使用 复制列表 积木。

3. 列表转置

列表转置 返回一个新列表(不改变原列表),元素顺序完全颠倒。比如 [1, 2, 3] 转置后返回 [3, 2, 1]


六、CSV 与列表互转

App Inventor 2 提供了一组 CSV 相关积木,方便列表与文本之间的格式转换:

积木

功能

示例

列表转换为CSV行

一维列表 → CSV 文本

[a,b,c]"a","b","c"

CSV行转换为列表

CSV 文本 → 一维列表

a,b,c["a","b","c"]

列表转换为CSV表

二维列表 → CSV 多行文本

每个子列表变成一行

CSV表转换为列表

CSV 多行文本 → 二维列表

每行变成一个子列表

这在处理导入导出的表格数据时特别有用。


七、函数式操作:Map、Filter、Reduce、Sort

这是列表积木中最强大的部分,灵感来源于函数式编程。

1. 创建映射列表(Map)

对列表中每个元素应用一个表达式,生成全新的列表。使用变量名 item 引用当前元素:

代码语言:txt
复制
Map: [ item × 2 ]  →  [1,2,3] 变为 [2,4,6]
```txt

2. 创建过滤列表(Filter)

根据布尔表达式筛选满足条件的元素:

代码语言:txt
复制
Filter: [ item > 2 ]  →  [1,2,3,4] 变为 [3,4]
```txt

3. 缩减列表(Reduce)

将列表逐步合并为单个值。首次运算用初始值和第一个元素,之后用结果和下一个元素,直到结束:

代码语言:txt
复制
Reduce: [ result + item ], 初始值: 0  →  [1,2,3] 结果为 6
```txt

4. 排序

App Inventor 2 提供了三种排序方式:

  • 创建有序列表:通用升序排序
  • 创建带比较器的有序列表:自定义 item1 和 item2 的比较规则
  • 创建带键函数的有序列表:为每个元素提取排序键后排序

此外还有 列表中的最小值列表中的最大值,快速获取极值。

5. 截取列表(Slice)

截取列表 通过起始索引和结束索引返回子列表(包含起始,不包含结束),和 Python 的切片概念类似。


八、键值对查找

在键值对中查找 是一个非常实用的积木,用于在「对的列表」(Pair List)中查找信息。

键值对列表格式:[[key1, value1], [key2, value2], ...]

代码语言:txt
复制
在键值对中查找 关键字: "cat", 键值对列表: [["a","apple"],["cat","100"]], 未找到: "not found"
→ 返回 "100"
```txt

这种模式在解析天气预报 JSON 等实际开发场景中广泛使用。


九、实战案例

案例 1:列表遍历

遍历使用控制积木中的循环,有两种方式:

  • 方式一从列表循环(foreach)—— 不需要索引时用这个,最简洁
  • 方式二从范围循环(for range)—— 需要索引时用这个

案例 2:列表去重

原理:新建空列表,逐一取出原列表元素,判断是否已存在,不存在才添加。

代码语言:txt
复制
原列表: [1, 2, 2, 3, 4, 4]
→ 去重后: [1, 2, 3, 4]
```txt

案例 3:清理列表

直接用空列表覆盖即可,简单粗暴:

代码语言:txt
复制
设置 global myList = [ 创建空列表 ]
```txt

案例 4:二维列表操作

二维列表就是「列表的列表」,例如 [["abc","123"],["xyz","456"]]。操作方式和一维列表几乎一样,区别在于取出的元素本身又是一个列表。这在解析 JSON 数据时极为常见。


总结

App Inventor 2 的列表积木覆盖了日常开发 95% 以上的数据操作需求。掌握以下要点,你就能游刃有余:

  1. 创建:空列表 / 带初始值列表 / 混合类型列表
  2. 增删改查:追加 / 插入 / 替换 / 删除 / 选取
  3. 函数式三件套:Map 映射、Filter 过滤、Reduce 缩减
  4. 排序与极值:三种排序 + 最小/最大值
  5. 格式转换:CSV 互转、键值对查找
  6. 实用技巧:复制列表防引用问题、遍历方式选择、去重方案

建议先用简单的待办清单 App 练手,把列表的增删改查全部跑通,再尝试 Map/Filter/Reduce 这些高级操作。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、列表是什么?为什么如此重要?
  • 二、基础操作:创建与添加
    • 1. 创建空列表
    • 2. 创建列表
    • 3. 追加列表项
  • 三、查询操作:查找、判断与选取
    • 1. 检查列表是否包含某对象
    • 2. 求列表长度
    • 3. 列表是否为空
    • 4. 随机选取列表项
    • 5. 求对象在列表中的位置
    • 6. 选择列表中索引值对应的列表项
  • 四、修改操作:插入、替换与删除
    • 1. 在列表某个位置插入项
    • 2. 替换列表中索引值对应的项
    • 3. 删除列表中某项
  • 五、进阶操作:合并、复制与反转
    • 1. 追加整个列表
    • 2. 复制列表
    • 3. 列表转置
  • 六、CSV 与列表互转
  • 七、函数式操作:Map、Filter、Reduce、Sort
    • 1. 创建映射列表(Map)
    • 2. 创建过滤列表(Filter)
    • 3. 缩减列表(Reduce)
    • 4. 排序
    • 5. 截取列表(Slice)
  • 八、键值对查找
  • 九、实战案例
    • 案例 1:列表遍历
    • 案例 2:列表去重
    • 案例 3:清理列表
    • 案例 4:二维列表操作
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档