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

时间: 2024-12-29 11:53:30

4、数据类型二:Lists的相关文章

Swift--基本数据类型(二)

Booleans Swift有基本的Boolean 类型,叫做Bool. 布尔值被称为逻辑运算,因为他们只能是true或者false.Swift提供2种Boolean值,一个true,另一个当然是false: .    1  let orangesAreOrange= true .    2  let turnipsAreDelicious= false orangesAreOrange和turnipsAreDelicious已经在初始化的时候被定义为布尔值.对于Int和Double类型,你并不

MYSQL基础笔记(七)- 数据类型二

字符串类型 在SQL中,讲字符串类型分成了六类:char,varchar,text,blob,enum,set char,定长字符串 磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度. char(L):L代表length,可以存储长度,单位为字符.最大长度值为255. varchar变长字符串 在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少空间,是根据具体的数据来确定的. varchar(L):L表示字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存

python基础----数据类型二

数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种 一Number(数字) 1.1 数字类型的创建 1 2 3 4 5 6 a=10 b=a b=666   print(a)#10 print(b)#666 注意这里与C的不同: 1 2 3 4 5 6 7 8 9 10 11 12

python3基础二——基本的数据类型二

一.数字(Number) 1.Python支持三种不同的数值类型:整型(int),浮点型(float),复数(complex) 2.Python数字数据类型用于存储数值 3.数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间 4.可以通过使用del语句删除数字对象.单个或多个对象的引用 5.数学常量:pi(圆周率).e(自然常数) 6.Python数字类型转换int() .float(). complex() 7.浮点数也就是小数,浮点数没有大小限制,但是超出一定范围

python数据类型二

阅读目录 1.列表的去嵌套 2.元组 3.range 列表的增删改查 一,增: 注意  list和str是不一样的,lst可以发生改变,所以直接就在原来的对象上进行可操作 追加模式 1 lst = ['麻花藤','林俊杰','周润发','周芷若'] 2 3 print(lst) 4 5 lst.append('lfh') 6 7 print(lst) 8 9 10 结果: 11 12 ['麻花藤', '林俊杰', '周润发', '周芷若'] 13 14 ['麻花藤', '林俊杰', '周润发',

基础数据类型 二

列表 list list [ ] 多个元素,每个元素用逗号隔开 1.定义形式 #定义方式一 常用方式 list_1 = [1,2,'a','b','c',"asdasawsd",汉字,[12,'now',端午]] #[a]也是列表 #定义方式二 list_2 = list("ab13") print(list_2) #底层使用的for循环 "ab13"为可迭代字符串类型 # 得到列表['a','b',1,3] 2.特点 可存储大量数据,字符串自能

今日学习内容回顾 一、基本数据类型 二、字符串型及内置方法 三、列表型及内置方法

一.基本数据类型int类型.float类型1.用途:int:记录年龄.电话号码.QQ号码 float:薪资.身高等 2.定义方式:int(object) float(object)#int(object) int返回的结果只能是数据整型,当你将int(float型)时,返回的是该float 对象的取整部分,其他的识别不了,当你将一个不全是数字的字符串强制转化为int整型 时,系统会出现报错.这里int(object)中的对象可以是一个,也可以多个,以逗号分开如:int(x,y)进制间转换形式:i

redis数据类型二之list的操作命令

1.字符串链表 list 的特点 首先在redis官网上找到这个: 如图示,redis lists就是一个有序元素组成的的序列,是由Linked Lists实现的.这意味这你在一个10个元素的 list 的头部或者尾部插入新的元素,和在一个有一百万个元素的list的头部或尾部中插入元素所耗费的时间是一样一样的. 性能总结:         a.如果插入的键不存在,则默认创建一个list:如果插入的键存在,则新增元素.         b.如果插入的内容全部被移除,则对应的键消失.        

python基本数据类型(二)

列表 (列表: list / 数组 / array),编号叫下标 / 索引 / 角标 最前面一个元素的下标时0,最后面一个元素的下标是 -1 cities=[] #定义一个空的列表 #增加元素 cities.append('北京') #在列表末尾增加一个元素 cities.insert(0,'上海') #在指定的位置插入一个元素,一次只能加一个. #删除元素 cities.pop(-1) #删除指定的元素,传下标 cities.remove('北京') #删除指定的元素,传元素 cities.c