清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.76

Aia StoreApp上架指南 .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

AppInventor2离线版中文教育版接入DeepSeek VIP会员 享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档AI2拓展IoT专题

查看: 18|回复: 0
打印 上一主题 下一主题

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

  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 856 天

    [LV.10]以坛为家III

    1202

    主题

    2005

    帖子

    5万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    57301

    AI2中文网VIP弹球达人接水果达人撸猫达人

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

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

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

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

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

    1. 创建空列表

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

    1. 设置 global myList = [ 创建空列表 ]
    复制代码


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

    2. 创建列表

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

    1. 设置 global colors = [ 创建列表: "红" "绿" "蓝" ]
    复制代码


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

    1. 设置 global userInfo = [ 创建列表: "张三" 25 true ]
    复制代码


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

    3. 追加列表项

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

    1. 追加列表项 到 global colors: "黄"
    复制代码


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

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

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

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

    2. 求列表长度

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

    3. 列表是否为空

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

    4. 随机选取列表项

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

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

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

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

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

    1. 选择列表项 列表: global colors, 索引: 2  返回 "绿"
    复制代码


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

    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 引用当前元素:

    1. Map: [ item x 2 ]  ->  [1,2,3] 变为 [2,4,6]
    复制代码


    2. 创建过滤列表(Filter)

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

    1. Filter: [ item > 2 ]  ->  [1,2,3,4] 变为 [3,4]
    复制代码


    3. 缩减列表(Reduce)

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

    1. Reduce: [ result + item ], 初始值: 0  ->  [1,2,3] 结果为 6
    复制代码


    4. 排序

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

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


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

    5. 截取列表(Slice)

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

    八、键值对查找

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

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

    1. 在键值对中查找 关键字: "cat", 键值对列表: [["a","apple"],["cat","100"]], 未找到: "not found"  ->  返回 "100"
    复制代码


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

    九、实战案例

    案例 1:列表遍历

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

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


    案例 2:列表去重

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

    1. 原列表: [1, 2, 2, 3, 4, 4]  ->  去重后: [1, 2, 3, 4]
    复制代码


    案例 3:清理列表

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

    1. 设置 global myList = [ 创建空列表 ]
    复制代码


    案例 4:二维列表操作

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

    总结

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

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


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

    相关资料

    列表积木完整文档
    App Inventor 2 中文网
    清泛IT社区 - 技术交流社区
    列表排序进阶教程

    觉得有用?点赞收藏,关注「App Inventor 2 中文网」,每周分享积木编程实战技巧。
    App Inventor 2 中文网 - MIT同步更新的中文本土化平台!v2.76 支持Android 15 & iOS 更新日志
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2026 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2026-07-04 23:30 , Processed in 0.017267 second(s), 31 queries .