4、数据类型二:Lists
1、关于list的组织形式
列表数据类型(Lists)可以存储一个有序的字符串列表,常用的操作时向列表两段添加元素,或者获取列表的某一个片段。列表类型的底层实现是一个双向链表(double linked list),所以向列表两端添加元素的时间复杂度为O(1),读取两端元素也非常快。同理,元素越是靠近中间位置,其读取速度越慢。
列表数据类型的组织形式如下:

图1. list组织结构图
用双向链表(双向箭头)将许多的字符串组织成了一个list(方括号)。
2、list的命令集
LPUSH key value [value ...]
LPUSHX key value
RPUSH key value [value ...]
RPUSHX key value LPOP key
BLPOP key [key ...] timeout
RPOP key
BRPOP key [key ...] timeout RPOPLPUSH source destination
BRPOPLPUSH source destination timeout LINSERT key BEFORE|AFTER pivot value
LREM key count value LINDEX key index
LSET key index value
LLEN key LRANGE key start stop
①、LPUSH key value [value ...] / RPUSH key value [value ...] / LPOP key / RPOP key
功能:类似于压栈和出栈操作,只是可以从两个方法分别进行。注意,空的列表key是不会存在的,即通过POP操作将所有列表中的value全部弹出时,key便会自动删除。
时间复杂度:O(1)
example:

②、LPUSHX key value / RPUSHX key value
功能:在做LPUSH之前或RPUSH之前首先检查key是否存在,如果存在则将value作push操作,否则不执行任何操作。
时间复杂度:O(1)
example:

③、BLPOP key [key ...] timeout / BRPOP key [key ...] timeout
功能:阻塞式弹出命令。如果key不存在,则等待,直到超时为止。
时间复杂度:O(1),不阻塞的情况下与LPOP或RPOP时间一样。
example:
在第一个客户端中检测list不存在,使用阻塞的BLPOP list 300,这是阻塞时间为300秒。由于list为空,所有命令行不返回:

在第二个客户端中push一个list,此时list中有值了:

一旦list中有值出现,便返回:

④、RPOPLPUSH source destination / BRPOPLPUSH source destination timeout
功能:source通过RPOP命令弹出一个元素,并且将该元素通过LPUSH压入到destination中。BRPOPLPUSH是阻塞式命令。
时间复杂度:O(1)
example:

⑤、LINSERT key BEFORE|AFTER pivot value
功能:向list中插入一个value值,插入的位置参考pivot。如果key不存在,则不作任何操作。如果pivot不存在,则返回-1
时间复杂度:O(N),其中N是找到pivot之前需要查找的value个数
example:

⑥、LREM key count value
功能:删除key列表中前count个值等于value的元素。count取值:
count > 0,则删除从左到右的前count个值等于value的元素
count < 0,则删除从右到左的前count个值等于value的元素
count = 0,则删除列表中所有值等于value的元素
时间复杂度:O(N),N表示列表的长度。
example:

⑦、LSET key index value
功能:将列表中在index位置的元素值设置为value。
时间复杂度:O(N),N是列表的长度。如果设置第一个元素或最后一个元素,则时间复杂度为O(1)。
example:

4、数据类型二:Lists的更多相关文章
- MYSQL基础笔记(七)- 数据类型二
字符串类型 在SQL中,讲字符串类型分成了六类:char,varchar,text,blob,enum,set char,定长字符串 磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度. ...
- MySQL学习5 - 数据类型二.md
一 字符类型 二 枚举类型和集合类型 一 字符类型 #官网:https://dev.mysql.com/doc/refman/5.7/en/char.html #注意:char和varchar括号内的 ...
- Python学习—基础篇之基本数据类型(二)
Python中重要的数据结构 1.列表 2.元组 3.字典 4.集合 列表 1.创建列表 # 方式一 name = [] print(type(name)) # 执行结果 >>> & ...
- 第二章 C#语法基础(2.1C#语言的数据类型二)
数据类型案例说明 一.数据类型与变量(计算整数10与20的和) namespace ConsoleApp1 { class Program { static void Main(string[] ar ...
- python 数据类型二 (列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- python基础----数据类型二
数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...
- python数据类型二
阅读目录 1.列表的去嵌套 2.元组 3.range 列表的增删改查 一,增: 注意 list和str是不一样的,lst可以发生改变,所以直接就在原来的对象上进行可操作 追加模式 lst = ['麻 ...
- python数据类型二(列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- python基础3 ---python数据类型二
ython基础 一.python数据类型 ------列表(list) 1.定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性:可存放多个不同类型的值:可修改指定索 ...
随机推荐
- 观后感 - 从MVC到前后端分离
今天读了篇文章 从MVC到前后端分离,讲了 前后端分离的 JAVA实现,读了前面几段就发现 自己 就有这种想法,蛮有意思的,打算研究下在PHP上的实现和应用
- BZOJ1563 NOI2009 诗人小G【决策单调性优化DP】
LINK 因为是图片题就懒得挂了 简要题意:有n个串,拼接两个串需要加一个空格,给你l和p,问你拼接后每个串的总长减l的绝对值的p次方的最小值 首先打表发现一下这题是决策单调的对于所有数据都成立就当他 ...
- BZOJ4373 算术天才⑨与等差数列 【线段树】*
BZOJ4373 算术天才⑨与等差数列 Description 算术天才⑨非常喜欢和等差数列玩耍. 有一天,他给了你一个长度为n的序列,其中第i个数为a[i]. 他想考考你,每次他会给出询问l,r,k ...
- 51nod 1244 莫比乌斯函数之和 【杜教筛】
51nod 1244 莫比乌斯函数之和 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号.具体定义如下: 如果一个数包含 ...
- 推荐近乎免费的调试神器——OzCode
当一只断点打在 Visual Studio 的代码编辑器中,程序命中断点的那一刻,调试才刚刚开始……这个时候忙碌的手在键盘和鼠标之间来回跳跃,试图抓住每一次单步执行带来的状态改变. 如果命中断点的那一 ...
- python3.x 类和对象
python同样支持类和对象.在python3.x中没有了经典类,只有新式类,默认创建的就是新式类.具体的新式类与经典类的不同在python3.x中已经没有意义了. 类的定义和实例化 python定义 ...
- SpringBoot @ConfigurationProperties报错
idea报错如下: Not registered via @EnableConfigurationProperties or marked as Spring component less... (C ...
- 记录一些WPF常用样式方便以后复用(转)
TextBox文本框 <Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{ ...
- modsecurity3.0 nginx 安装
备注: 使用的是modsecurity 3.0 的版本,也是nginx 官方推荐使用的,同时使用的是nginx 的dynamic module 1. 环境准备 https://github.com/S ...
- macOS -- 为什么XAMPP启动后输localhost跳转到http://localhost/dashboard?
在XAMPP环境下,当我们在地址栏输入'localhost'的时候,进入的不是htdocs根目录下,而是直接跳转到了http://localhost/dashboard?下. 这是因为在xamppfi ...