本节主要介绍对列表数据类型的操作,包括在左右两边添加元素、在指定位置添加元素、删除指定位置的元素等。
列表数据类型的结构如图 1 所示。
1) lindex(键,位置):该函数用于得到指定键下某个位置的值。位置是整数,0 表示第一个位置的元素的值。
>>> r.exists('list_obj2') # 是否存在list_obj2这个键 1 # 存在 >>> r.llen('list_obj2') # 该键包含多少个元素 3 # 3个元素 >>> r.lindex('list_obj2', 0) # 0表示第一个位置的元素 b'3' >>> r.lindex('list_obj2', 1) # 1表示第二个位置的元素 b'2' >>> r.lindex('list_obj2', 2) # 2表示第三个位置的元素 b'1'
2) lrange(键,开始位置,结束位置):该函数返回指定键下指定区间内元素的值,当然也可以得到所有元素的值。返回值是一个列表。
>>> r.exists('list_obj2') # 是否存在list_obj2这个键 1 # 存在 >>> r.llen('list_obj2') # 该键包含多少个元素 3 # 3个元素 >>> r.lrange('list_obj2', 0, 3) # 返回所有元素的值 [b'3', b'2', b'1']
3) lpush(键,值):该函数用于在列表的左边插入元素。返回值是修改后列表中元素的个数。
>>> r.lpush('list1', 12) 1 # 现在只有元素 >>> r.type('list1') # 查看类型 b'list' >>> r.lindex('list1', 0) # 查看第一个元素的值 b'12' >>> r.lpush('list1', 18) # 在左边插入一个元素18 2 # 现在有两个元素了 >>> r.lindex('list1', 0) # 读取第一个元素的值 b'18' >>> r.lindex('list1', 1) # 读取第二个元素的值 b'12' >>> r.lindex('list1', -1) # 允许使用-1表示最后一个元素的值 b'12'
允许一次插入多个元素,方法是传入多个参数。最后一个参数是最后被插入的,所以其也是在列表的最左边,也就是 index=0 的位置。
>>> r.lpush('list1', 1, 2, 3) # 一次在左边插入1、2和3 7 # 现在有7个元素 >>> r.lindex('list1', 0) # 最左边的元素应该是3 b'3' >>> r.lindex('list1', 1) # 左边第二个元素应该是2 b'2' >>> r.lindex('list1', 2) # 左边第三个元素应该是1 b'1'
4) rpush(键,值):该函数用于在列表的右边插入元素。返回值是插入后列表的元素个数。
>>> r.rpush('list1', 180) # 在右边插入一个元素180 3 # 现在包含3个元素 >>> r.lindex('list1', -1) # 查看最右边的元素的值 b'180' # 就是刚才插入的值 >>> r.rpush('list1', 190) # 再在右边插入一个新的值190 4 >>> r.lindex('list1', -1) # 查看最右边的元素的值 b'190'
和 lpush() 一样,也可以一次插入多个元素:
>>> r.rpush('list1', 199, 299, 399) # 插入3个元素 10 >>> r.lindex('list1', -1) # 最右边的元素是399 b'399' >>> r.lindex('list1', -2) # 右边第二个元素是299 b'299' >>> r.lindex('list1', -3) # 右边第三个元素是199 b'199'
可以发现 rpush(list,val1,val2,val3) 等效于下面的代码段:
rpush(list, val1)
rpush(list, val2)
rpush(list, val3)
5) llen(键):该函数用于返回指定键下元素的个数,其仅对列表对象有效。
>>> r.exists('list_obj2') # 是否存在键list_obj2 0 # 不存在 >>> r.lpush('list_obj2', 1, 2, 3) # 依次在左边插入1、2、3三个元素 3 # 现在列表中有3个元素了 >>> r.exists('list_obj2') # 是否存在键list_obj2' 1 # 存在 >>> r.type('list_obj2') # 该键对象的值的类型 b'list' # 列表 >>> r.llen('list_obj2') # 得到对应键的列表元素个数 3 # 元素个数为3
6) lpop():该函数用于删除最左边的元素。返回值是原来最左边元素的值。
>>> r.lindex('list1', 0) # 原来第一个元素的值为3 b'3' >>> r.lindex('list1', 1) # 原来第二个元素的值为2 b'2' >>> r.lpop('list1') # 删除第一个元素 b'3' # 删除的元素的值 >>> r.lindex('list1', 0) # 现在第一个元素就是原来的第二个元素了 b'2'
7) rpop(键):该函数用于删除最右边的元素。返回值是原来最右边元素的值。
>>> r.lindex('list1', -1) # 最右边元素的值 b'399' >>> r.lindex('list1', -2) # 倒数第二个元素的值 b'299' >>> r.rpop('list1') # 弹出最右边的,也就是倒数第一个元素 b'399' # 弹出元素的值 >>> r.lindex('list1', -1) # 现在的最后一个元素,就是原来的倒数第二个元素 b'299'