美文网首页
list类型删除元素

list类型删除元素

作者: 闲云野鹤_23dd | 来源:发表于2020-12-12 11:20 被阅读0次

LPOP

语法

LPOP key

移除并返回列表 key 的头元素。

返回值:
列表的头元素。 当 key 不存在时,返回 nil 。

例子

redis> LLEN course
(integer) 0

redis> RPUSH course algorithm001
(integer) 1

redis> RPUSH course c++101
(integer) 2

redis> LPOP course  # 移除头元素
"algorithm001"

RPOP

语法

RPOP key

移除并返回列表 key 的尾元素。

返回值
列表的尾元素。 当 key 不存在时,返回 nil 。

例子

redis> RPUSH mylist "one"
(integer) 1

redis> RPUSH mylist "two"
(integer) 2

redis> RPUSH mylist "three"
(integer) 3

redis> RPOP mylist           # 返回被弹出的元素
"three"

redis> LRANGE mylist 0 -1    # 列表剩下的元素
1) "one"
2) "two"

LTRIM

语法

LTRIM key start stop

对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。

下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

当 key 不是列表类型时,返回一个错误。

LTRIM 命令通常和 LPUSH key value [value …] 命令或 RPUSH key value [value …] 命令配合使用,举个例子:

LPUSH log newest_log
LTRIM log 0 99

这个例子模拟了一个日志程序,每次将最新日志 newest_log 放到 log 列表中,并且只保留最新的 100 项。注意当这样使用 LTRIM 命令时,时间复杂度是O(1),因为平均情况下,每次只有一个元素被移除。

超出范围的下标

超出范围的下标值不会引起错误。

如果 start 下标比列表的最大下标 end ( LLEN list 减去 1 )还要大,或者 start > stop , LTRIM 返回一个空列表(因为 LTRIM 已经将整个列表清空)。

如果 stop 下标比 end 下标还要大,Redis将 stop 的值设置为 end 。

例子

# 情况 1: 常见情况, start 和 stop 都在列表的索引范围之内

redis> LRANGE alpha 0 -1       # alpha 是一个包含 5 个字符串的列表
1) "h"
2) "e"
3) "l"
4) "l"
5) "o"

redis> LTRIM alpha 1 -1        # 删除 alpha 列表索引为 0 的元素
OK

redis> LRANGE alpha 0 -1       # "h" 被删除了
1) "e"
2) "l"
3) "l"
4) "o"

# 情况 2: stop 比列表的最大下标还要大

redis> LTRIM alpha 1 10086     # 保留 alpha 列表索引 1 至索引 10086 上的元素
OK

redis> LRANGE alpha 0 -1       # 只有索引 0 上的元素 "e" 被删除了,其他元素还在
1) "l"
2) "l"
3) "o"

# 情况 3: start 和 stop 都比列表的最大下标要大,并且 start < stop

redis> LTRIM alpha 10086 123321
OK

redis> LRANGE alpha 0 -1        # 列表被清空
(empty list or set)

# 情况 4: start 和 stop 都比列表的最大下标要大,并且 start > stop

redis> RPUSH new-alpha "h" "e" "l" "l" "o"     # 重新建立一个新列表
(integer) 5

redis> LRANGE new-alpha 0 -1
1) "h"
2) "e"
3) "l"
4) "l"
5) "o"

redis> LTRIM new-alpha 123321 10086    # 执行 LTRIM
OK

redis> LRANGE new-alpha 0 -1           # 同样被清空
(empty list or set)

相关文章

  • list类型删除元素

    LPOP 语法 移除并返回列表 key 的头元素。 返回值:列表的头元素。 当 key 不存在时,返回 nil 。...

  • Python No.1--List集合

    list ==> 有序集合,内置数据类型,可随时添加和删除其中的元素 创建方式List = ['a', 'b',...

  • python基础知识

    1.list和tuple list是一种有序的集合,可以随时添加和删除元素,元素的类型也可以不同。 >>> cla...

  • Python 学习 - 数据类型

    整数 浮点数 字符串 布尔类型 空值 list:有序集合,可以随时添加和删除元素 tuple:与list类似,有序...

  • 使用list和tuple

    list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。...

  • list和tuple是Python内置的有序集合,一个可变,一个

    list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。...

  • Python学习笔记(3)-----使用list和tuple

    list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。...

  • python 01

    list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。...

  • list

    list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。...

  • 【python☞2】List和Tuple类型 --学习笔记

    List Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。...

网友评论

      本文标题:list类型删除元素

      本文链接:https://www.haomeiwen.com/subject/tsmbbktx.html