长度与排序
统计并排序序列。
长度与排序 是 CoddyKit 上的免费 Lua Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Lua Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Lua Academy 课程共包含 4 节课。
长度运算符
# 运算符会返回序列中项目的数量。
对于包含三个元素、结构完整且从 1 开始的表,#t 的值是 3。最后一个项目位于索引 #t 处。
local list = {"a", "b", "c"}
print(#list)
print(list[#list])在循环中获取长度
将 #t 用作数值 for 循环的上限,即可访问每个索引。
由于序列从 1 开始,范围是 1, #t。
local nums = {10, 20, 30, 40}
for i = 1, #nums do
print(i, nums[i])
end空表
空序列的长度为 0。
因此,使用 #t == 0 可以快速检查列表是否包含任何项目。
local empty = {}
print(#empty)
if #empty == 0 then
print("list is empty")
end修改后的长度
使用 table 函数添加或删除项目时,# 会相应更新。
insert 会增加数量,remove 会减少数量。
local list = {"a", "b"}
table.insert(list, "c")
print(#list)
table.remove(list)
print(#list)空缺会破坏长度计算
# 只有在序列没有空缺时才可靠。出现空缺可能会使结果未定义。
请使用 table.insert 和 table.remove,这样 # 才能保持可靠。
local good = {1, 2, 3}
print(#good)
table.insert(good, 4)
print(#good)原地排序
table.sort(t) 会原地重新排列序列,默认从小到大排序。
它会修改原表,而不是返回一个新表。
local nums = {3, 1, 2}
table.sort(nums)
print(nums[1], nums[2], nums[3])对字符串排序
字符串默认按字母顺序排序,逐个字符进行比较。
排序后,索引 1 存放顺序中的第一个项目。
local names = {"Cy", "Ann", "Bob"}
table.sort(names)
print(names[1], names[2], names[3])降序排列
传入比较函数即可控制顺序。返回 a > b 会让较大的项目排在前面。
该函数决定 a 是否应排在 b 前面。
local nums = {3, 1, 4, 2}
table.sort(nums, function(a, b)
return a > b
end)
print(nums[1], nums[2], nums[3], nums[4])自定义比较
比较器允许您按照任意规则排序,例如按照字符串长度而不是字母顺序排序。
下面的示例会让较短的单词排在前面。
local words = {"hello", "hi", "howdy"}
table.sort(words, function(a, b)
return #a < #b
end)
print(words[1], words[2], words[3])长度与排序
把这些工具结合起来:先对列表排序,再根据位置读取两端的项目。
升序排序后,最小值位于索引 1,最大值位于索引 #t。
local data = {7, 2, 9, 4}
table.sort(data)
print("min:", data[1])
print("max:", data[#data])先排序再迭代
一种常见流程是:先对序列排序,然后使用 ipairs 按顺序遍历并输出。
排序会重新排列同一个从 1 开始的表,因此迭代会遵循新的顺序。
local scores = {50, 10, 30}
table.sort(scores)
for i, s in ipairs(scores) do
print(i, s)
end快速检查
回想一下长度运算符会为您提供什么。
回顾
您学会了:#t 会统计没有空缺的序列中的项目数量,最后一个项目位于 t[#t],而 table.sort 会原地重新排列项目(默认升序,也可以使用自定义比较器)。
结合 insert、remove 和 ipairs,您现在可以自信地管理 Lua 序列了。
常见问题解答
「长度与排序」课时是免费的吗?
是的 — 「长度与排序」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Lua Academy 课程的其余内容,请升级到 CoddyKit PRO。 Lua Academy 课程共包含 4 节课。
「长度与排序」这节课中我会学到什么?
统计并排序序列。 你通过在浏览器中直接运行的动手代码来练习 Lua Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Lua Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Lua Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「长度与排序」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Lua Academy 课中编写并运行代码吗?
能。每节 Lua Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。