一、基本数据类型

lua:  nil(空)、boolean(false和nil为假)、number(数值)、string(字符串)、table(表)、function(方法)、thread (线程)、userdata

python:  None(空)、boolean(false和None为假)、number(数值)、string(字符串)、list(列表)、tuple(元表)、dictionary(字典)、def(函数)、thread (线程)

string操作:

  lua:  

str = “Hello” .. “World!”

print (str)                        # 输出完整字符串
print (string.sub(str,1,1)) # 输出字符串中的第一个字符
print (string.sub(str,3,5)) # 输出字符串中第三个至第五个之间的字符串
print (string.sub(str,3,-1)) # 输出从第三个字符开始的字符串
print (str .. "TEST") # 输出连接的字符串
print (string.find(str,"el")) # 输出第一个满足项起始下标
print (string.format("the value is:%d",4)) # 字符串格式化输出 输出结果
Hello World!
H
llo
llo World!
Hello World!TEST
2 3
the value is:4

  python:  

str = “Hello” + “World!”

print (str)           # 输出完整字符串
print (str[0]) # 输出字符串中的第一个字符
print (str[2:5]) # 输出字符串中第三个至第六个之间的字符串
print (str[2:]) # 输出从第三个字符开始的字符串
print (str * 2) # 输出字符串两次
print (str + "TEST") # 输出连接的字符串
print ("He" in str) # 查询是否包含某字符
print ("the value is:%d" %(4)) #字符串格式化输出 输出结果
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
True
the value is:4

集合操作:

  lua:  下标从1开始

array = {"Lua", "Python"}

for i= 0, #array do
print(array[i])
end
--for循环 ipairs对于集合下标要求必须从1开始递增并且中间值不可为nil
--pairs 输出结果是随机的即不是按照集合顺序输出,但没有ipairs的限制 for _, v in ipairs(array) do
print(v)
end 输出结果
"Lua"
"Python"
"Lua"
"Python"

   python:  下标从0开始

array = ["Lua", "Python"]

for i in range(len(array)):
print(array[i])
i = 0 while (i<len(array)):
print(array[i])
i+=1 输出结果
"Lua"
"Python"
"Lua"
"Python"

二、lua注意事项

1、lua函数第一层结构中,return语句之后不能再有别的代码。

function func()
return "H"
local data = "Hello"
end

2、goto语句的跳转目的,不能写到逻辑判断语句块中。

function func()
local i = 1
goto continue
if i == 2 then
::continue::
print("true")
else
print("false")
end
end

3、table之间的赋值为引用,即只是将地址进行引用,而不是申请新的内存空间。

function func()
local tab1 = {1, 2, 3}
local tab2 = tab1
table.remove(tab2)
for i = 1, #tab1 do
print(tab1[i])
end
print("_______________")
for i = 1, #tab1 do
print(tab2[i])
end
end func() --[[
1
2
_______________
1
2
]]

4、在使用and或or时,尽可能加括号。

function func()
local i = 1
print(i and 10 or 5 + 1)
print((i and 10 or 5) + 1)
i = nil
print(i and 10 or 5 + 1)
print((i and 10 or 5) + 1)
end func() --[[
10
11
6
6
]]

5、for语句,下标不是连续的不要使用ipairs。ipairs遇见nil就返回。

function func()
local tab = {1, 2, 3, nil, a = 5, 6}
for i = 1, #tab do
print(tab[i])
end
print()
for k, v in ipairs(tab) do
print(k, v)
end
print()
for k, v in pairs(tab) do
print(k, v)
end
end func() --[[
1
2
3
nil
6 1 1
2 2
3 3 1 1
2 2
3 3
5 6
a 5
]]

lua、python对比学习的更多相关文章

  1. python 对比学习

    python和java面向对象的不同 1.属性和方法 java中类的属性(static)除外,对象全部独立拥有: 而python中类的属性,其实例对象一个字段都没有.底层是这么搞的: 对象object ...

  2. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  3. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  4. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  5. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  6. 利用python深度学习算法来绘图

    可以画画啊!可以画画啊!可以画画啊! 对,有趣的事情需要讲三遍. 事情是这样的,通过python的深度学习算法包去训练计算机模仿世界名画的风格,然后应用到另一幅画中,不多说直接上图! 这个是世界名画& ...

  7. Python Tkinter 学习成果:点歌软件music

    笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...

  8. 对比java和python对比

    对比java和python 对比java和python 2011年04月18日 1.难易度而言.python远远简单于java. 2.开发速度.Python远优于java 3.运行速度.java远优于 ...

  9. 参考分享《Python深度学习》高清中文版pdf+高清英文版pdf+源代码

    学习深度学习时,我想<Python深度学习>应该是大多数机器学习爱好者必读的书.书最大的优点是框架性,能提供一个"整体视角",在脑中建立一个完整的地图,知道哪些常用哪些 ...

随机推荐

  1. SpringBoot整合WebSocket实现前后端互推消息

    小编写这篇文章是为了记录实现WebSocket的过程,受不了啰嗦的同学可以直接看代码. 前段时间做项目时设计了一个广播的场景,具体业务不再赘述,最终要实现的效果就是平台接收到的信息实时发布给所有的用户 ...

  2. 蒲公英 · JELLY技术周刊 Vol.19 从零开始的 Cloud IDE 开发

    蒲公英 · JELLY技术周刊 Vol.19 你是否也会有想法去开发一个自己的 IDE 却苦于时间和精力不足,完成 Desktop IDE 却又被 Cloud IDE 的概念追在身后难以入睡,这样的两 ...

  3. SpringBoot使用简单缓存

    第一步开启缓存(只要是springboot项目就可以)  数据库连接等相关配置请读者自行实现. 在Application启动类上添加注解 @EnableCaching 开启缓存 @SpringBoot ...

  4. 机器学习 | 深入SVM原理及模型推导(一)

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第32篇文章,我们来聊聊SVM. SVM模型大家可能非常熟悉,可能都知道它是面试的常客,经常被问到.它最早诞生于上世纪六 ...

  5. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  6. json对象遍历顺序问题

    对json对象遍历我们一般使用for in循环,或者Object.keys + 数组方法.在接触js以来听到过一种说法: for in 遍历顺序是不可靠的 但是在实际开发中for in 循环也是按照其 ...

  7. Nginx Ingress on TKE 部署最佳实践

    概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...

  8. type类型为number的input标签可以输入字母e

    主要原因是:e在数学上代表的是无理数,是一个无限不循环的小数,其值约为2.7182818284,所以在输入e的时候,输入框会把e当成一个数字看待. 可以采用下面的方式来避免这个BUG,在input标签 ...

  9. 通过WordCount解析Spark RDD内部源码机制

    一.Spark WordCount动手实践 我们通过Spark WordCount动手实践,编写单词计数代码:在wordcount.scala的基础上,从数据流动的视角深入分析Spark RDD的数据 ...

  10. 5000字 | 24张图带你彻底理解Java中的21种锁

    本篇主要内容如下: 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synch ...