lua学习 第二章数据与标准库

本文深入探讨Lua语言中的表格和字符串处理,详细介绍了表格的创建、赋值、遍历及操作,以及字符串的声明和常见操作,如大小写转换、逆序等。

第二章数据与标准库

表格

表格是lua中唯一的数据结构。

--创建表格
x = 5
a = {}
b = { key = x, antherkey = 10 } --字符串做key
c = { [x] = b, ["string"] = 10, [34] = 10, [b] = x} --[x]=b,x是key,内容是表格b
--给表格赋值
a[1] = 20
a["foo"] = 50
a[x] = "bar"

print(b["key"]) --5
print(b[key])--nil
print(c["string"])--10
print(c[34])--10
print(c[b])--5
print(c[x])--table:0x2467e50
print(c[5])--table:0x2467e50

这里a初始化为空表,b中字符串不加[]表示直接用字符串做key,从代码运行结果可以看出,在c中要想获取key为x的值,可以通过c[x]也可以通过c[x的值]两种方式。此外从c的定义可以看出可以用任何类型的数据做关键字,包括用表格。

Syntactic Sugar

可以通过如下方式访问和修改表格的数据:

t = {foo = 1,bar =2}
print(t.foo) --1
t.bar =3

数组和指针

在创建表格时,如果不设置key,而是直接这样定义:

a = {11,22,"foo","bar"}

也就相当于是定义了一个数组,此时,会按顺序给其分配key,从1开始分别,于是便可以这样修改表格:

a[3] = "foooo"

也可以这样访问表格数据: 

print(a[1])--11
print(a[3])--foo
print(#a) --4

最后一行代码通过#获得表格a的长度。

Generic for Loop

a = {x = 400, y = 300, [20] = "foo"}
b = { 20, 30 ,40}
for key , value in pairs(a) do
  print(key, value)
end

for index, value in ipairs(b) do
  print(index, value)
end

pairs是一个迭代器,可以获得表格的关键字和值,而ipairs与pairs的作用一样,是ipairs只用于指针形式的表格(即不声明关键字的表格)它从1开始遍历直到遇到nil时。

表格上的一些操作

t = {24,25,8,13,1,40}
table.insert(t,50)--在表格末尾插入
table.insert(t,3,89)--在第3个位置插入
table.remove(t,2)--删去第2个位置的数据
table.sort(t)--将表格由小到大排序

字符串

字符串可以用单引号声明也可以用双引号,还可以用[[...]]声明多行字符串。

s = "foo\nbar"
t = 'he said "hello world"'
u = "Hello \"world\""
v = [[
<html>
  <body>
   <p>Hello world!</p>
  </body>
</html>
]]

字符串操作

string.lower("HeLLO") -- hello 小写
string.upper("Hello") -- HELLO  大写
string.reverse("world") -- dlrow 逆反
string.char(87) -- W  数字变字符
string.sub("hello world", 2, 5) -- ello  子串

特殊的

string.gsub("hello 42", "(%d+)", "%1 3") -- hello 42 3

这里gsub(字符串s,模式p,替换t),在s中找到模式为p的子串,然后用t替换掉这部分。得到新的字符串,而gsub的返回值,不止包含替换之后的字符串,也包含替换的次数,两个数据。

而且“替换t”可以是字符串,也可以其他的模式,也可以是一个函数,比如:

-- 4 + 4 = 8
string.gsub("2 + 2 = 4", "(%d)", function(s)
return s * 2
end)

在上面的代码中,“替换t”就是一个函数,实现的结果就是将字符串中匹配模式p的部分执行函数s,每个数扩大两倍。

-- prints each word
for w in string.gmatch("good morning chaps", "%w+") do
print(w)
end

输出:

gmatch是返回查找到字符串的迭代器,gmatch(字符串s,模式p),gmatch找到字符串s匹配模式p的内容。

t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
 t[k]=v
end
for k, v in pairs(t) do
 print(k, v)
end

输出:

参考链接:https://blog.youkuaiyun.com/u012654882/article/details/70766946

http://ebens.me/post/lua-for-programmers-part-2

https://blog.youkuaiyun.com/zhangxaochen/article/details/8085484

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化训练,到执行分类及结果优化的完整流程,并介绍了精度评价通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置结果后处理环节,充分利用ENVI Modeler进行自动化建模参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略效果评估体系,涵盖当前企业传播面临的预算、资源、内容效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放GEO优化,提升品牌在AI搜索中的权威性可见性;④通过数据驱动评估体系量化品牌影响力销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析工具指南进行系统学习,重点关注媒体适配性策略GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值