python和lua数据类型的比较
<div class="post-nav">
<div class="post-nav-next post-nav-item">
<a href="https://hulinhong.com/2015/07/11/redis%E6%A6%82%E8%A6%81%E4%B9%8B%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/" rel="next" title="redis概要之数据类型">
<i class="fa fa-chevron-left"></i>
<p class="post-nav-pre-next-title">
redis概要之数据类型
</p>
</a>
</div>
<span class="post-nav-divider"></span>
<div class="post-nav-prev post-nav-item">
<a href="https://hulinhong.com/2015/07/11/redis_hiredis_install_tutorial/" rel="prev" title="redis和hiredis安装教程">
<p class="post-nav-pre-next-title">
redis和hiredis安装教程
</p>
<i class="fa fa-chevron-right"></i>
</a>
</div>
</div>
<h2 id="List"><a href="https://hulinhong.com/#List" class="headerlink" title="List []"></a>List []</h2><p>例如 :<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">#!/usr/bin/python</span><br><span class="line"># -*- coding: UTF-8 -*-</span><br><span class="line"> </span><br><span class="line">list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]</span><br><span class="line">tinylist = [123, 'john']</span><br><span class="line"> </span><br><span class="line">print list # 输出完整列表</span><br><span class="line">print list[0] # 输出列表的第一个元素</span><br><span class="line">print list[1:3] # 输出第二个至第三个的元素 </span><br><span class="line">print list[2:] # 输出从第三个开始至列表末尾的所有元素</span><br><span class="line">print tinylist * 2 # 输出列表两次</span><br><span class="line">print list + tinylist # 打印组合的列表</span><br></pre></td></tr></table></figure></p>
以上实例输出结果:1
2
3
4
5
6['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
Tuple(元祖)(),相当于只读列表,不可以二次赋值
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
, 除了元祖用()而list用[], 而且元祖只是可读的, 其他的跟list一毛一样
dictionary(字典){},key值对
1 | #!/usr/bin/python |
输出结果为:1
2
3
4
5This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
lua比较特殊的数据类型
lua变量
变量在使用前,必须在代码中进行声明,即创建该变量。
编译进程执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。
1 | a = 5 -- 全局变量 |
执行以上实例输出结果为:
1 | $ lua test.lua |
lua的特有的东西table(表)
在 Lua 里,table 的创建是通过”构造表达式”来完成,
最简单构造表达式是{},用来创建一个空表。
也可以在表里添加一些数据,直接初始化表:1
2
3
4
5-- 创建一个空的 table
local tbl1 = {}
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
1 | -- table_test.lua 脚本文档 |
脚本执行结果为:1
2
3$ lua table_test.lua
key : value
10 : 33
不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始。1
2
3
4
5-- table_test2.lua 脚本文档
local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
print("Key", key)
end
脚本执行结果为:1
2
3
4
5$ lua table_test2.lua
Key 1
Key 2
Key 3
Key 4
table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。1
2
3
4
5
6
7
8-- table_test3.lua 脚本文档
a3 = {}
for i = 1, 10 do
a3[i] = i
end
a3["key"] = "val"
print(a3["key"])
print(a3["none"])
脚本执行结果为:1
2
3$ lua table_test3.lua
val
nil