本节主要介绍对列表数据类型的操作,包括在左右两边添加元素、在指定位置添加元素、删除指定位置的元素等。

列表数据类型的结构如图 1 所示。

图 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'

python redis list_Python redis list列表操作相关推荐

  1. python中的常见的列表操作及注意事项

    1.1 使用append()添加元素到尾部 传统的向列表中添加元素的方法是利用append()函数将元素一个个添加到尾部.   1.2 使用extend()或+=合并列表 使用extend()可以将一 ...

  2. Python入门(02) -- 列表操作

    一.使用for循环遍历列表 first_names = ['zhao', 'qian', 'sun', 'li'] for first_name in first_names:print(first_ ...

  3. pythonif语句的冒号总是报错_干货:python入门if语句及其列表操作

    本教程使用的课本是<Python编程:从入门到实践>,作者:[美] Eric Matthes 本节学习代码中针对不同情况进行分别处理的方法,关键字是if.学完这节,从理论上讲,你就可以编写 ...

  4. [转载] python怎么获取redis中的数据_python操作redis数据库

    参考链接: 使用Python在Selenium中进行非阻塞等待 3.redis基本命令 String set(name, value, ex=None, px=None, nx=False, xx=F ...

  5. redis:redis介绍和安装、普通连接和连接池、redis 5大数据类型之字符串、Hash、列表、其他操作(通用)、管道、django使用redis、接口缓存

    目录 一. redis介绍和安装 二. 普通连接和连接池 三. redis 5大数据类型之字符串 四. redis 5大数据类型之Hash 五. redis 5大数据类型之列表 六. 其他操作(通用) ...

  6. python编程(redis操作)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 为了提高db的运行速度,同时也由于内存容量的不断增大,现在很多网站和服务器代码越来越喜欢用red ...

  7. go操作redis之go-redis,python操作redis之redis

    目录 go操作redis go-redis安装 连接方式 单机连接 TLS连接模式 Redis 集群连接 Redis 哨兵模式连接 基本使用 执行任意命令 redis.Nil zset操作 扫描或遍历 ...

  8. python使用redis在实际场景使用_用python操作redis及redis的一些应用场景

    redis安装 网上很多windows.Linux的安装教程,可根据自己的需要寻找对应教程安装 redis-py安装 pip install redis redis可视化工具 API的使用 redis ...

  9. redis的lrange_thinkphp5操作redis系列教程】列表类型之lRange,lGetRange

    namespace app\admin\controller; use think\cache\driver\Redis; use think\Controller; use \think\Db; c ...

最新文章

  1. Python数据挖掘:数据探索,数据清洗,异常值处理
  2. java多线程抽奖_java 线程池、多线程并发实战(生产者消费者模型 1 vs 10) 附案例源码...
  3. java实现自动收红包功能_Java实现抢红包功能
  4. arcengine 加载地图不显示_用LSV下载城市地图、全省地图教程
  5. java resultset 映射到实例_[Java]ResultSet的用法与实例
  6. STP端口状态特点、STP端口角色特点、链路状态发生变化,STP如何重新收敛? TCN何时发?uplinkfast技术、Portfast技术、backbonefast技术、常见的STP调整命令:
  7. Intel 64/x86_64/IA-32/x86处理器通用寄存器 (2) - 64位通用寄存器
  8. 高可用性及容灾的几个衡量指标
  9. 广告主成本怎么又超了!
  10. JavaScript 原始数据类型转换
  11. python爬图mzitu_换个框架爬妹子图mzitu解决直接访问的403
  12. 使用Modern UI for WPF的导航功能
  13. Android xml 画上半圆 矩形,Android 半圆矩形的实现
  14. 在HTML中插入SVG的几种方式
  15. PHP单例模式demo
  16. 计算机毕业设计Java服装连锁店后台管理系统(源码+系统+mysql数据库+lw文档)
  17. Shiro Session及SessionManager的设计概念
  18. 阿里百秀响应式页面制作
  19. xls导入mysql heidisql_HeidiSQL 导入Excel数据
  20. IT系统设计中的5S原则

热门文章

  1. 如何在单例模式下禁止init
  2. Linux Matlab服务器进一步改造成Application Server(应用程序服务器)
  3. [SHELL] LAMP一键安装脚本设计(v2.1)
  4. c# list排序的三种实现方式
  5. 读取网络抓包文件data得到参数
  6. python3 开发面试题(面向对象)6.6
  7. Codeforces Educational Codeforces Round 3 D. Gadgets for dollars and pounds 二分,贪心
  8. HDLM命令dlnkmgr详解之二__help/clear
  9. javascript中构造StringBuffer实例
  10. NET常见问题记录(不定期更新)